Мне кажется, что ты хочешь сохранить свой торт и съесть его тоже.Или есть метод, который вызывает асинхронный код и в то же время возвращает результаты синхронно.Вы можете превратить метод в синхронный, если это то, что вам нужно:
- (void) computeSomethingAndReturnSynchronously
{
dispatch_semaphore_t semaphore = dispatch_semaphore_create(0);
[self doSomeAsynchronousOperationWithCompletion:^{
// take the call results here
dispatch_semaphore_signal(semaphore);
}];
dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER);
dispatch_release(semaphore);
}
Это запустит асинхронный код и затем заблокирует выполнение до тех пор, пока не станут доступны результаты асинхронного вызова.Это помогает?(Я должен добавить, что я бы предпочел оставить код асинхронным и вернуть NSArray
в другом блоке завершения.)