所有任务完成后NSURLSession通知

时间:2015-03-10 05:58:13

标签: ios ios7

我一直在阅读文档并在线查看,但未能找到这样做的方法。目前,我在一个会话中创建了20个任务,并希望只有在完成该会话的所有20个任务时才能执行某种回调。有没有办法做到这一点?我查看了许多委托方法,没有发现任何兴趣。

2 个答案:

答案 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];

}