Singleton下载管理器?

时间:2013-10-10 20:17:32

标签: ios singleton nsurlconnection nsoperation nsoperationqueue

我的应用程序中的一个视图控制器允许从服务器下载文件。但是用户可以导航到此视图控制器,点击“下载”按钮,然后返回到前一个视图控制器。如果他们再次导航到具有“下载”按钮的视图控制器,他们应该看到进度,甚至看到下载已完成。

所以在我看来,视图控制器本身不能保存对Download操作的任何引用,我认为它是NSOperation的一个子类,可以处理NSURLConnection的东西,也不是它的NSOperationQueue的所有者操作被添加到。

这种情况不需要单独的下载管理器吗?我经常看到单身人士气馁,但我怎么会这样呢?同样,可以在可以随时解除分配的视图控制器中启动下载。下载开始后,无论用户是否离开屏幕,都应该完成下载。我想将所有内容直接下载到磁盘(不在内存中)。然后,当用户访问所述视图控制器时,我会检查下载管理器以查看相关下载是否已完成,正在进行或从未开始下载。

2 个答案:

答案 0 :(得分:2)

我会使用单身人士。只需要小心你在使用单身人士的时间/地点。在使用之前保持谨慎并考虑这种情况。

请小心处理下载进度/完成的回调,因为单例将比发出请求的视图控制器更长。视图控制器需要适当地管理它们的“观察”。

答案 1 :(得分:0)

我认为这是少数可以使用单例模式的案例之一。它完全适合单身人士描述(通过Wikipedia):

  

在软件工程中,单例模式是一种设计模式   将类的实例化限制为一个对象。这是   当需要一个对象来协调跨越的操作时非常有用   系统。

我在我的应用程序中这样做,我已经看到其他人完成了,例如:

This post也可能对您感兴趣。每个iOS应用程序都带有一个单独的应用程序(AppDelegate),所以你的类可能只是一个single instance,它被AppDelegate引用。