AFNetworking要求が完了するまで待つ必要があります。ディスパッチグループを使用しようとしましたが、正しく取得できないようです。ここで複数のAFNetworking要求が完了するまで待ちます
は私のコードです:
dispatch_group_t group = dispatch_group_create();
for (int k = 0; k < 10 ; k++) {
dispatch_group_enter(group);
[[AFHTTPSessionManager manager] GET:@"http://google.com/" parameters:nil progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
NSLog(@"success");
dispatch_group_leave(group);
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
NSLog(@"failure");
dispatch_group_leave(group);
}];
}
dispatch_group_wait(group, DISPATCH_TIME_FOREVER);
NSLog(@"DONE");
問題はどちらも成功ブロックするので、それは、dispatch_group_waitにはまり、また故障ブロックが呼び出されるということです。
どうすれば解決できますか?
dispatch_group_notifyを使用してみましたか? – jtbandes
はい、それは動作します。しかし、それは私の問題を解決しません。アプリケーションがどのようにビルドされたか(プロジェクトを継承したため)、私はこのメソッドの実行を停止する必要があります。 – guidev
これは残念です。それをリファクタリングすることを検討したいかもしれません。スレッドをブロックすると、別のスレッドが何かをするのを待つだけの仕事をしているスレッドを浪費します。 libdispatchは、サービス待ち行列のために起動する64スレッドの制限を課しているので、あなたのアプリケーションが何をしているかに応じて問題になる可能性があります。 – jtbandes