Я тестирую некоторый код, который выполняет асинхронную обработку с использованием Grand Central Dispatch. Код тестирования выглядит следующим образом:
[object runSomeLongOperationAndDo:^{
STAssert…
}];
Тесты должны ждать завершения операции. Мое текущее решение выглядит так:
__block BOOL finished = NO;
[object runSomeLongOperationAndDo:^{
STAssert…
finished = YES;
}];
while (!finished);
Что выглядит немного грубо, знаете ли вы лучший способ? Я мог бы выставить очередь и затем заблокировать, вызвав dispatch_sync
:
[object runSomeLongOperationAndDo:^{
STAssert…
}];
dispatch_sync(object.queue, ^{});
… но это может показаться слишком много на object
.