【发布时间】:2014-02-20 00:46:10
【问题描述】:
我有一个应用使用新的NSURLSession API 进行后台下载。当下载以提供NSURLSessionDownloadTaskResumeData 的方式取消或失败时,我会存储数据块,以便以后可以恢复。在极少数情况下,我注意到在野外发生崩溃:
Fatal Exception: NSInvalidArgumentException
Invalid resume data for background download. Background downloads must use http or https and must download to an accessible file.
此处出现错误,其中resumeData 是NSData blob,session 是NSURLSession 的一个实例:
if (resumeData) {
downloadTask = [session downloadTaskWithResumeData:resumeData];
...
数据由 Apple API 提供,经过序列化,然后在稍后的时间点反序列化。它可能已损坏,但它永远不会为 nil(如 if 语句所检查的那样)。
如何提前检查resumeData 是否无效,以免应用崩溃?
【问题讨论】:
标签: ios ios7 nsurlsession nsurlsessiondownloadtask