2012-01-12 5 views
0

私はiPhoneのスレッドで作業しています。誰もがiPhoneのスレッドに関する違い

[NSThread detachNewThreadSelector:@selector(loadButtonInfo:) toTarget:self withObject:buttonInfo]; 

[self performSelectorOnMainThread:@selector(loadButtonInfo:) withObject:buttonInfo waitUntilDone:NO]; 

答えて

2

との違いを説明できる第一の方法は、新しい(バックグラウンド)スレッドを作成し、指定したメソッドを実行します。

2番目のメソッドは、メインスレッドで指定されたメソッドを呼び出します。メインスレッドは、ユーザーインターフェイスを操作する必要がある唯一のスレッドであるため、これは重要です。たとえば、モデルのデータをバックグラウンドスレッドで更新する場合は、メインスレッドでメソッドを実行して、新しいデータを反映するように表示を更新することができます。

+0

Caleb:performSelectorOnMainThreadについては、今私が描いているのは、メインスレッド、peforSelectorOnMainThreadがあり、新しいブランチを作成していますが、まだメインスレッドにアタッチされています....あなたの説明の最後の部分が混乱しています。*** performSelectorOnMainThread ***(他の場所から)データを取得するために使用されました。その後、メインスレッドにデータを表示または更新しますか? – tonytran

+0

話す「分岐」はありません。そのメソッドを呼び出した後のある時点で、メインスレッドは指定されたメッセージを受信者に送信します。あなたの例では、メインスレッドは '[self loadButtonInfo:buttonInfo]'を実行します。あなたは[ドキュメント](http://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/nsobject_Class/Reference/Reference.html#//apple_ref/occ/instm/NSObject/)を読んだのですか? performSelector:onThread:withObject:waitUntilDone :):-performSelectorOnMainThread:...?説明はかなり明白です。 – Caleb

+0

私はちょうどドキュメンテーションに行きました。ありがとうございました。 * performSelectorOnMainThread *をいつ使うべきか、* NSThread detachNewThreadSelector *をいつ使うべきか、私はまだ疑問に思っています。 – tonytran

関連する問題