__NSCFBackgroundDownloadTask was deallocated while key value observers were still registered with it.
scfhao opened this issue · comments
我在模拟器上测试 Demo 时,遇到程序产生异常的情况,这个异常在 AFNetworking的Issue
中可以找到记录。
我的测试步骤如下(非必现,如果你在测试过程中遇到同样的问题,请在下面评论):
- 在列表中点击一个未下载的内容启动下载。
- 使应用进入后台(模拟器 Shift+Command+H)。
- 停止在模拟器上运行应用。
- 在 Xcode 上重新 Run 应用。
- 点击示例中的“音乐列表”、“已下载列表”或“下载设置”
但我在真机上测试 Demo 时,并未遇到该问题,如果你在真机上遇到这个问题,请在下方评论留言告知。
另外,我还发现一个真机与模拟器上后台下载的差别:
真机:iPhone SE、iOS 9.3.3
Xcode:Xcode 8.3.2,模拟器版本为iPhone 7 Plus - iOS 10.3(14E269)
真机效果:在真机上,将多个文件加入下载队列,后台下载完成一个文件后,会调用- application:handleEventsForBackgroundURLSession:completionHandler:
方法,进而触发下载队列中后续处于等待下载状态的文件开始下载。
iOS模拟器效果:在模拟器上下载完一个文件后并不调用上述AppDelegate
方法,而是出于暂停状态,把程序切回前台后才会继续下载队列中的其他文件。
基于上述的差异,我建议在测试后台下载时尽量使用真机进行测试。可能在不同的模拟器版本或iOS版本上的运行效果会有差异,如果你发现更多的情况,欢迎在下面进行留言。