如何防止当uiviewcontroller被摧毁时发生崩溃,并且存在活动的urlsession任务

问题描述:

当我有一个活动的URLSessionTask并且用户按下后退按钮并且视图控制器已被授权时,我的Swift 3 iOS应用程序发生崩溃。我在后退按钮的urlsessiontask上调用cancel方法,并且当时没有发生崩溃,但是当用户返回视图控制器时,应用程序崩溃。如果用户允许URL会话任务完成,则不会崩溃。有谁知道我能做些什么来防止坠毁?我使用iOS 10,Swift 3,Xcode 8.预先感谢。如何防止当uiviewcontroller被摧毁时发生崩溃,并且存在活动的urlsession任务

+1

在开始处添加回调关闭'[weak self]',并询问self是否为零 –

如果下载完成时视图控制器可能不在身边,请勿将视图控制器设置为URL会话的委托。

这里有一个解决方案:

创建DownloadManager单那就是URL会议的代表,保存文件到磁盘,一旦下载完成,记录了有关文件的信息已经被下载,然后通知委托,使用弱委托属性。 (有人认为单身人士是所有邪恶的根源,绝不应该被使用,我不是那种人,我认为一个应用程序范围的下载管理器对于单身人士来说是一个很好的用例。 )