0

私は waitUntilDone が何をするのかはっきりしていませんが、このスレッドを見つけました:

performSelectorOnMainThread の WaitUntilDOne の意味は何ですか?

ただし、NSURLConnection(非同期)とwaitUntilDoneをYESに設定するセレクターを実行すると、どうなりますか?メソッドが実行されるのを待ちますが、メソッドは実際に何らかの非同期操作 (NSURLConnection など) を実行します。その場合、どのような影響がありますか?

ありがとう!

4

1 に答える 1

0

NSURLConnection は非同期です。コードはメイン スレッドで実行され、ダウンロードの進行に合わせてデリゲート呼び出しを行います。バックグラウンド スレッドから NSURLConnection を実行する必要はありません。

バックグラウンド スレッドで実行する必要があるコードがある場合は、preformSelectorOnMainThread メソッドを使用して、ワーカー スレッドからメイン スレッドにメッセージを送信できます。これを行う一般的な理由の 1 つは、バックグラウンド スレッドから UI を更新できないことです。メイン スレッドで UI を更新するメソッドを呼び出します。

フラグ waitUntilDone は、 performSelectorOnMainThread 呼び出しの後に何が起こるかを制御します。waitUntilDone が false の場合、バックグラウンド スレッドは、メイン スレッドのコードが終了するのを待たずに次の行に進みます。

waitUntilDone が true の場合、メイン スレッドが送信したセレクターの実行を完了するまで、バックグラウンド スレッドはブロックされます。

于 2012-09-10T01:34:44.900 に答える