「iOS、私はこのメソッドをできるだけ早く実行したいのですが、この実行ループの繰り返しでは実行しないでください。次の実行ループでは実行しないでください。ありがとうございます。」
今、私はいつも次のようにしています:
[self performSelector:@selector(doSomethingInNextRunLoop) withObject:nil afterDelay:0];
[self doSomeOtherThings];
-doSomeOtherThings
常に BEFORE が実行されることを
前提としています-doSomethingInNextRunLoop
。
ドキュメントには次のように記載されています。
遅延を 0 に指定しても、セレクターがすぐに実行されるとは限りません。セレクターは引き続きスレッドの実行ループでキューに入れられ、できるだけ早く実行されます。
したがって、基本的に、ダイレクトメッセージを送信したかのようにメソッドがすぐに呼び出され、-doSomethingInNextRunLoop
前に実行される可能性があり-doSomeOtherThings
ますか?
できるだけ早く呼び出されるようにするにはどうすればよいですか?しかし、この同じ実行ループの反復では決して呼び出されませんか?
言葉遣いを明確にするために: 実行ループとは、メイン スレッドと、スレッドが新しいイベントの準備が整うまですべてのメソッドが戻る必要がある反復を意味します。