使用一些代碼,我遇到了運行循環,這是我新來的,在NSOperation
的內部。在NSOperation中使用NSThread睡眠
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:
- 每個線程一次 - 顯着傷害了性能。
任何更好的解決方案,或建議?