NSURLConnectionを使用して非同期Webリクエストを使用するアプリケーションをプログラミングしているので、複数のスレッドが実行されています。私のアプリケーションの主なロジックが1つのスレッドで行われるように、私はperformSelectorOnMainThread:waitUntilDone:
を大量に使用しています。時には、私はこれをメインスレッドで実行しています。これが私の好奇心を刺激しました。performSelectorOnMainThread:waitUntilDone:がメインスレッドから呼び出されたとき、いつ実行されますか?
メインスレッド中にperformSelectorOnMainThread:waitUntilDone:
が呼び出された場合は、 performSelector:
と同じように動作しますか? waitUntilDone:
がYES
の場合はどうなりますか? NO
の場合はどうなりますか?
編集:私はwaitUntilDone:
がYES
あるとき、セレクタが(ほぼ)即座に実行されますが、waitUntilDone:
がNO
であれば、それが実行されたとき、私は理解できないことを見出しました。
'waitUntilDone:'が 'YES'のとき、セレクタは直ちに(ほぼ)実行されますが、' waitUntilDone: 'が' NO'のときにいつ実行されるのか分かりません。 – Jumhyn
デバッガーはここでは役に立ちませんか?新しいスレッドがいつ生成されるかを調べるだけです。 –
@Cole、 'performSelector' ** OnMainThread:**は、特にスレッドからメインスレッドと呼ばれるときにスレッドを作成しません。 –