如何等待异步调度块完成?
我正在测试一些使用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
。
梦里花落0921