当我有一个活动的 URLSessionTask 并且用户按下后退按钮并且视图控制器被关闭时,我的 Swift 3 iOS 应用程序崩溃了。 我在后退按钮中的urlsessiontask上调用取消方法,当时没有发生崩溃,但是当用户返回视图控制器时,应用程序崩溃。 如果用户允许 url 会话任务完成,则不会崩溃。 有谁知道我能做些什么来防止崩溃? 我正在使用iOS 10,Swift 3,Xcode 8。 提前谢谢。
如果下载完成时视图控制器可能不存在,则不要使视图控制器成为 URL 会话的委托。
这是一个解决方案:
创建一个作为 URL 会话委托的DownloadManager
单一实例,下载完成后将文件保存到磁盘,记录有关已下载文件的信息,然后使用弱委托属性通知其委托。
(有些人认为单身人士是万恶之源,永远不应该使用。我不是那种人。在我看来,应用程序范围的下载管理器是单例的绝佳用例。