我的应用中遇到NSURLSessionDownloadTask
问题我用代码创建了几百个下载任务:
NSURLSessionDownloadTask * task = [_urlSession downloadTaskWithURL:downloadUrl];
NSLog(@"session: %@, download task %@ for url: '%@'",_urlSession, task, downloadUrl);
if (!task)
{
NSLog(@"ooops no task");
}else
{
}
在xcode控制台中,我有类似这样的消息:
2014-03-28 11:23:39.297 MYAPP[3838:60b] session: <__NSCFURLSession: 0x19471e70>, download task (null) for url: 'http://xxx.cloudfront.net/seminarcontent/nsm_photos_11_24d8505e-4ddd-4e9b-baef-a90d5e322702.jpg'
同样在Organizer的控制台中,我看到以下消息:
nsnetworkd[322] <Error>: __NSCFLocalDownloadFile: error 2 creating temp file: /private/var/mobile/Applications/MYAPPGUID-BD21-4C5A-8DB6-845D80BE75E3/Library/Caches/com.apple.nsnetworkd/CFNetworkDownload_R91Hqn.tmp
之前创建的NSURLSession:
_urlSession = [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration backgroundSessionConfiguration:sessionIdenttificator] delegate:self delegateQueue:nil];
所有网址都有效,只有在应用启动后才开始下载
请分享您对我的问题的看法。提前谢谢。
更新:
我还添加了对缓存目录的检查,确保在我开始下载之前存在但没有改变
其他信息,我无法在模拟器中或在调试模式下的设备上重现该错误(启用了断点)。
答案 0 :(得分:1)
最后,经过几天的调试,找到了部分解决方案。
@synchronized(_urlSession)
{
task = [_urlSession downloadTaskWithURL:downloadUrl];
}
我为我的代码添加了锁定,现在一切正常,但我想这不是解决问题的方法。
感谢@Jody Hagins的非常有用的评论。