Ios 单件下载管理器?

Ios 单件下载管理器?,ios,singleton,nsurlconnection,nsoperation,nsoperationqueue,Ios,Singleton,Nsurlconnection,Nsoperation,Nsoperationqueue,我的应用程序中的一个视图控制器允许从服务器下载文件。但是用户可以导航到此视图控制器,点击“下载”按钮,然后返回到以前的视图控制器。如果他们再次导航到具有“下载”按钮的视图控制器,他们应该可以看到进度,甚至可以看到下载已完成 因此,在我看来,视图控制器本身无法保存对下载操作的任何引用,我认为这将是NSOperation的一个子类,可以处理NSURLConnection内容,也不能是操作添加到的NSOperationQueue的所有者 这种情况不需要单例下载管理器吗?我经常看到单身人士气馁,但我还能

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

因此,在我看来,视图控制器本身无法保存对下载操作的任何引用,我认为这将是NSOperation的一个子类,可以处理NSURLConnection内容,也不能是操作添加到的NSOperationQueue的所有者


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

我会使用单例。在使用单例时/在何处小心。在使用之前,要省吃俭用,考虑一下情况


请注意下载进度/完成的回调,因为单例将比发出请求的视图控制器寿命长。视图控制器需要适当地管理其“观察结果”。

我认为这是可以使用单例模式的少数情况之一。它完全符合单例描述(通过):

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

我在我的应用程序中这样做,我也见过其他人这样做,例如:

  • (第28章)
你可能也感兴趣。每个iOS应用程序都有一个单例(AppDelegate),因此您的类可能只是AppDelegate引用的
单个实例