当 uiviewcontroller 被取消并且有一个活动的 urlsessiontask 时如何防止崩溃

How to prevent a crash when the uiviewcontroller is deinited and there is an active urlsessiontask

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

不要让视图控制器成为 URL 会话的委托,如果它在下载完成时可能不存在。

这是一种解决方案:

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

(有些人认为单例是万恶之源,永远不应该使用。我不是那些人。在我看来,应用程序范围的下载管理器是单例的一个很好的用例.)