当uiviewcontroller被删除并且存在活动的urlsessiontask时,如何防止崩溃

时间:2017-04-02 12:32:27

标签: ios swift request-cancelling deinit urlsessiontask

当我有一个活动的URLSessionTask并且用户按下后退按钮并且视图控制器被取消时,我的Swift 3 iOS应用程序崩溃了。我在后退按钮上的urlsessiontask上调用了cancel方法,当时没有发生崩溃,但是当用户返回到视图控制器时,应用程序崩溃了。如果用户允许url会话任务完成,则不会发生崩溃。有谁知道我能做些什么来防止崩溃?我正在使用iOS 10,Swift 3,Xcode 8.提前感谢。

1 个答案:

答案 0 :(得分:1)

如果下载完成后视图控制器可能不在,则不要将视图控制器作为URL会话的委托。

这是一个解决方案:

创建一个DownloadManager单例,它是URL会话的委托,下载完成后将文件保存到磁盘,记录有关已下载文件的信息,然后通知委托,使用弱委托属性。

(有些人认为单身人士是所有邪恶的根源,不应该被使用。我不是那些人之一。在我看来,应用程序范围的下载管理器对于单身人士来说是一个很好的用例。)