NSURLSession、多数据任务、completionHandler

NSURLSession, multiple data tasks, completionHandler

我想使用 NSURLSessiondataTaskWithURL:completionHandler: 将 4 个不同的 URL 下载到 NSData 对象中。我知道我可以打电话:

[session dataTaskWithURL completionHandler:^(NSData* data, NSURLResponse* response, NSError* error) {
    // handler
}];

将这些添加到会话后,我知道我可以使用 [task resume] 启动它们。有什么方法可以让会话简单地启动我添加到其中的所有任务吗?

但是当所有四个都完成时(出现错误或其他情况)我如何得到通知?我是否需要保留某种线程安全的字典来跟踪每个任务的状态?

我的目的是,一旦下载完这些,我需要启动一个计时器,以便将来可以再次下载相同的四个 URL。

  1. 不,无法同时启动多个任务。

  2. 是的,您需要保留一个字典来存储响应,使用数据任务作为键。为了安全起见,在主线程上执行所有修改和访问。

您也可以考虑调度组,如 this question 中所述。