私のアプリケーションは多くのファイルをダウンロードする必要があり、私はダウンロードタスクを作成するためにforループを使用します。以下の方法は、AFNetworkingによって提供される方法です。AFNetworking/NSURLSessionはファイルをダウンロードするために100以上のタスクを作成するのに時間がかかります
- (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のためにそれをexcute場合を意味し、比較的長い完了するのにかかります回、それは5〜6秒かかります。
私のアプリは、ユーザーにダウンロードするかどうかを尋ねるためにalertViewをポップアップし、はいをタップするとforループのようになり、その結果、UIはすべてのタスクが完了するまで5〜6秒間作成した。
私が正しく行ったか、またはバッチダウンロードを行うための他の方法があるかどうかはわかりません。 誰でも助けてくれますか?ありがとうございました。
? – user2053760
cgdとはどういう意味ですか? –