我有使用以下方法在主队列上发布结果的工作线程任务:
// on worker queue
// (long-running task)
// publish results on main queue
dispatch_async(dispatch_get_main_queue(), ^(void) {
_finished = YES;
});
我如何坐在主队列(主CXTest线程)中并强制gcd处理队列上的当前任务,例如:
// on main queue
while (!_finished) {
[NSThread sleepForTimeInterval:0.1];
// TODO : force main queue to perform current blocks
}
显而易见的解决方案是在工作线程中设置_finished,但是由于某些原因我不能这样做(只能在主线程中触摸UI控件)
您可以像这样泵送运行循环:
while (!_finished) {
[[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:1];
}
最终将耗尽主队列,将其设置_finished
为YES
。
但我建议你使用一个异步测试帮手像XCAsyncTextCase,也expecta有相当得心应手异步帮手。其他测试框架也可能具有此类扩展。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句