ブロック内でいくつかのネットワーク呼び出しを実行しているときに、アクティビティ インジケーターを表示したいと考えていますdispatch_group_asyc
。ただし、アクティビティ インジケーターは、ブロックが終了したときにのみ表示されます。dispatch_group_t
他のタスクを実行する前に、ネットワーク呼び出しの結果を取得する必要があるため、 を作成しています。これは私のコードの簡略版です:
- (BOOL)doNetCall
{
[activityIndicator startAnimating];
__block BOOL netResult = NO;
dispatch_queue_t queue = dispatch_queue_create(netQueue, NULL);
dispatch_group_t group = dispatch_group_create();
dispatch_group_async(group,queue,^{
netResult = [service queryService];
});
dispatch_group_wait(group, DISPATCH_TIME_FOREVER);
dispatch_release(group);
dispatch_release(queue);
[activityIndicator stopAnimating];
if (netResult) {
// Perform some tasks
}
else {
[self showAlertView];
}
return netResult;
}
私は何を間違っていますか?ありがとう!
編集:取得した結果を返すために、ブロックが終了するまで待機するメソッドが必要です