1

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

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

一旦将这些添加到会话中,我知道我可以使用[task resume]. 有什么方法可以告诉会话简单地启动我添加到其中的所有任务?

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

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

4

1 回答 1

1
  1. 不,没有办法一次启动多个任务。

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

您也可以考虑一个调度组,如本问题中所述。

于 2015-12-03T23:02:27.963 回答