我一直在阅读文档并在线查看,但未能找到这样做的方法。目前,我在一个会话中创建了20个任务,并希望只有在完成该会话的所有20个任务时才能执行某种回调。有没有办法做到这一点?我查看了许多委托方法,没有发现任何兴趣。
答案 0 :(得分:5)
我认为您需要自己跟踪。考虑保留一组任务对象。在启动任务时,将任务对象添加到阵列。任务完成后,从阵列中删除任务对象。
当您到达阵列中的零任务时,您就完成了。
答案 1 :(得分:1)
如果您按顺序调用这些任务,那么当前一个任务以- (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didFinishDownloadingToURL:(NSURL *)location
结束时,您必须做的就是生成下一个任务,同时跟踪计数器变量。例如:
- (void)URLSession:(NSURLSession *)session
downloadTask:(NSURLSessionDownloadTask *)downloadTask
didFinishDownloadingToURL:(NSURL *)location{
//Write your file to disk here
//-nextResource will return the next resource in your array or nil
NSURL *nextResource = [self nextResource];
if(nextResource)
[self downloadResourceWithURL:nextResource];
}