WaitUntilDOne
の意味はperformSelectorOnMainThread
にありますか?performSelectorOnMainThreadでWaitUntilDOneの意義は何ですか?
どのようにYES
またはNO
に設定してWaitUntilDone
にすることができますか?
UPDATE:
私の質問されている必要があります:どのようなシナリオでは、彼らは違いを作るのですか?
セルジオの答えは私が期待していたものでした。
WaitUntilDOne
の意味はperformSelectorOnMainThread
にありますか?performSelectorOnMainThreadでWaitUntilDOneの意義は何ですか?
どのようにYES
またはNO
に設定してWaitUntilDone
にすることができますか?
UPDATE:
私の質問されている必要があります:どのようなシナリオでは、彼らは違いを作るのですか?
セルジオの答えは私が期待していたものでした。
をperformSelectorOnMainThread:withObject:waitUntilDone:
リターンを持つように、現在のスレッドブロック/待機を意味:指定された後まで、現在のスレッドブロックかどうかを指定
ブールセレクタはメインスレッド上の受信側で実行されます。このスレッドをブロックするには、YESを指定します。それ以外の場合は、このメソッドをすぐに戻すにはNOを指定します。 現在のスレッドがメインスレッドでもあり、このパラメータにYESを指定すると、メッセージはすぐに配信されて処理されます。
実行するスレッドに焦点を当てる必要があります。performSelectorOnMainThread
。そのスレッドはブロックし、メインスレッドがそのセレクタを完了するまで待機します。例えば、ワーカースレッドがメインスレッドにメッセージを送信する必要がある(例えば、スレッドセーフではないいくつかの中央ストアに情報を格納する)必要があるとする。作業者は、同じ種類の別の操作を発行する前に操作をブロックして待機する必要があります。だから、waitUntilDone
がこのような場合に便利です。
あなたがNO
を言うなら、performSelectorOnMainThread
はブロックされませんし、あなたのセレクタを実行するためにメインスレッドを待たずに、すぐにperformSelectorOnMainThread
後にコードの次の行を実行します。
YES
と言うと、performSelectorOnMainThread
という名前のスレッドは、メインスレッドがセレクタを実行するまでその行で実行をブロックし、次に続行します。
YESセレクタが実行されるまで、NOはApple docs about waitUntilDone
から直ちに
通常、現在のスレッドの実行をブロックすることを避けたい場合は、YES
を使用します。
NO
の場合、実行ループが再開されたときに実行されるメインスレッドの実行ループの実行リストにメッセージが追加されます。これはすぐに、実質的に同時に/同時に実行できます。
ありがとうございます.. – Krishnan