Я хочу отображать индикатор активности при выполнении некоторых сетевых вызовов в блоке 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;
}
Что я делаю не так? Спасибо!
EDIT: мне нужен метод ожидания завершения блока, чтобы вернуть результат, который я получаю
dispatch_group_wait
. Это очень плохо. Не делайте то, что вы делаете в основном потоке. - person rmaddy   schedule 03.07.2013