Я думаю, что это архитектурная проблема.Задачи имеют что-то вроде:
- панель инструментов редактирования
- fetchImonggoItemsDataIntoDocument
- сделать что-то еще
Если это должно быть сделано точно в порядкетогда я не совсем понимаю использование блоков или очередей;просто запускайте операторы друг за другом, и вы будете установлены.
В противном случае альтернативой # 1 будет использование dispatch_sync
вместо dispatch_async
.Опять же, я не совсем уверен, какая польза от использования очереди, но она есть.
Альтернативой # 2 будет использование обратного вызова из блока.Что-то вроде:
- (IBAction)refresh:(UIBarButtonItem *)sender {
NSLog(@"checking");
[self editToolbar];
dispatch_queue_t fetchQ = dispatch_queue_create("Refreshing", NULL);
dispatch_async(fetchQ, ^{
[self setupFetchedResultsController];
[self fetchImonggoItemsDataIntoDocument: self.itemDatabase];
[self doneChecking]; // <-- NOTE! call the callback
});
dispatch_release(fetchQ);
}
// NOTE! refresh: has been split up into two methods
- (void)doneChecking:
NSLog(@"done checking");
//do something here
}