「Run Loops」テーマに関する「IOS Developer Library」を読みましたが、記事の中で「Run Loops を再帰的に実行することは可能です」という一文がありました。私の質問は、どのシナリオで再帰実行ループを使用する必要があるかです。
私の別の質問は、「実行ループの目的は、実行する作業があるときにスレッドをビジー状態に保ち、何もないときにスレッドをスリープ状態にすることです。」というステートメントについてです。イベントが来ない場合、実行ループはどのようにスリープしますか?メインスレッドの実行ループはスリープしますか? 2番目のスレッドの状況はどうですか?
私がインターネットから見つけたネストされた実行ループの一例は、以下のようなものです:
[NSThread detachNewThreadSelector:@selector(runOnNewThread) toTarget:self withObject:nil];
while (!end) {
NSLog(@”runloop…”);
[[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]];
NSLog(@”runloop end.”);
}
現在のスレッドは、別のスレッドの作業が完了するまでブロックされます。しかし、なぜこれが起こるのか、現在のスレッドをどのようにブロックできるのでしょうか?
誰でも私の質問に答えることができますか?