0

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

4

1 回答 1

1

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

这是一个解决方案:

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

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

于 2017-04-02T12:39:05.323 回答