いくつかのコードを使って、私は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:
をたくさん打っています - 一度、各スレッドのために - パフォーマンスが大幅に痛いです。
これ以上の解決策やアドバイスはありますか?