【发布时间】:2017-08-11 15:15:40
【问题描述】:
我的应用程序需要下载许多文件,我使用 for 循环来创建下载任务。以下方法是AFNetworking提供的方法。
- (NSURLSessionDownloadTask *)downloadTaskWithRequest:(NSURLRequest *)request
progress:(void (^)(NSProgress *downloadProgress)) downloadProgressBlock
destination:(NSURL * (^)(NSURL *targetPath, NSURLResponse *response))destination
completionHandler:(void (^)(NSURLResponse *response, NSURL *filePath, NSError *error))completionHandler{
__block NSURLSessionDownloadTask *downloadTask = nil;
url_session_manager_create_task_safely(^{
downloadTask = [self.session downloadTaskWithRequest:request];
});
[self addDelegateForDownloadTask:downloadTask progress:downloadProgressBlock destination:destination completionHandler:completionHandler];
return downloadTask;
}
我的代码是这样的:
for (NSInteger i = 0; i<= 500; i++) {
NSMutableURLRequest *request = array[i];
NSURLSessionDownloadTask *downloadTask = [manager downloadTaskWithRequest:request progress:downloadProgress destination:^NSURL * _Nonnull(NSURL * _Nonnull targetPath, NSURLResponse * _Nonnull response) {
return destinationPath;
} completionHandler:^(NSURLResponse * _Nonnull response, NSURL * _Nullable filePath, NSError * _Nullable error) {
completionBlock(filePath,error);
}];
[downloadTask resume];
}
问题是
downloadTask = [self.session downloadTaskWithRequest:request];
这条线需要比较长的时间,也就是说如果执行500次,大概需要5~6秒。
我的应用会弹出一个 alertView 询问用户是否下载,如果他们点击 Yes,它将执行类似于 for 循环的操作,因此 UI 将停留在那里 5~6 秒,直到创建所有任务.
我不确定我是否正确,或者是否有其他方法可以进行批量下载。 谁能帮我?谢谢。
【问题讨论】:
标签: ios afnetworking nsurlsession