NSURLSession、多数据任务、completionHandler
NSURLSession, multiple data tasks, completionHandler
我想使用 NSURLSession
和 dataTaskWithURL:completionHandler:
将 4 个不同的 URL 下载到 NSData
对象中。我知道我可以打电话:
[session dataTaskWithURL completionHandler:^(NSData* data, NSURLResponse* response, NSError* error) {
// handler
}];
将这些添加到会话后,我知道我可以使用 [task resume]
启动它们。有什么方法可以让会话简单地启动我添加到其中的所有任务吗?
但是当所有四个都完成时(出现错误或其他情况)我如何得到通知?我是否需要保留某种线程安全的字典来跟踪每个任务的状态?
我的目的是,一旦下载完这些,我需要启动一个计时器,以便将来可以再次下载相同的四个 URL。
不,无法同时启动多个任务。
是的,您需要保留一个字典来存储响应,使用数据任务作为键。为了安全起见,在主线程上执行所有修改和访问。
您也可以考虑调度组,如 this question 中所述。
我想使用 NSURLSession
和 dataTaskWithURL:completionHandler:
将 4 个不同的 URL 下载到 NSData
对象中。我知道我可以打电话:
[session dataTaskWithURL completionHandler:^(NSData* data, NSURLResponse* response, NSError* error) {
// handler
}];
将这些添加到会话后,我知道我可以使用 [task resume]
启动它们。有什么方法可以让会话简单地启动我添加到其中的所有任务吗?
但是当所有四个都完成时(出现错误或其他情况)我如何得到通知?我是否需要保留某种线程安全的字典来跟踪每个任务的状态?
我的目的是,一旦下载完这些,我需要启动一个计时器,以便将来可以再次下载相同的四个 URL。
不,无法同时启动多个任务。
是的,您需要保留一个字典来存储响应,使用数据任务作为键。为了安全起见,在主线程上执行所有修改和访问。
您也可以考虑调度组,如 this question 中所述。