使用一些代码时,我遇到了运行循环,这是我刚接触的,在NSOperation
s.
s正忙于下载数据——当他们忙时,有代码以s 和线程休眠NSOperation
的形式等待下载完成。NSRunLoop
我特别感兴趣的是这段代码:
while (aCertainConditionIsTrue && [self isCancelled]==NO) {
if(![[NSRunLoop currentRunLoop] runMode: NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:1.0]]){
[NSThread sleepForTimeInterval:1.0];
}
}
我已阅读有关运行循环的信息,runMode:beforeDate:
并将等待输入源或超时。虽然我不是 100% 算作输入源。
在第一次执行时,它总是返回 NO 并点击sleepForTimeInterval:
. 这很糟糕吗?
在特定的实用程序类中,它的sleepForTimeInterval:
影响很大——每个线程一次——这会严重影响性能。
对此有更好的解决方案或建议吗?