Я тестирую код, который выполняет асинхронную обработку с помощью 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
.