2011-12-09 8 views
0

私はクラスを持っていて、* classMainがこのクラスのオブジェクトだとしましょう。今インスタンスメソッドとしてこのクラス - performAction。だから、通常の方法を実行するために、私はどうなる:NSOperationとメソッドでクラスを実行

[classMain performAction] 

今、私はこれを実行するためにNSOperationQueueを使用したい場合、私はどうなる:

NSOperationqueue *opQueue = [[NSOperation alloc] init]; 
[opQueue addOperation: classMain]. 

私は何をしたい、実際に[classMain performAction]を追加していますキュー、私は私が望む方法を実行することができますか?

また、10.7ではスレッドを実行する(アプリケーションがロックされないようにする)推奨方法がありますか?

答えて

0

スレッドを実行したり、さまざまなスレッドでさまざまなアクションを実行するには、さまざまな方法があります。

http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Multithreading/CreatingThreads/CreatingThreads.html

そして、あなたはちょうどあなたがあなたのアプリをロックせずにバックグラウンドで実行したい簡単なタスクを持っている場合は、最も簡単な解決策はperformSelectorInBackground:withObject:を使用することを見つけることがあります。あなたはこのリソースが役に立つかもしれません。

どのアプローチが推奨されているかは、特定のユースケースとどのような作業を別のスレッドにオフロードするかによって大きく異なります。

+0

これは役に立ちます。ありがとう。 – ZionKing

+0

performSelectorInBackground:withObject:を使用した場合の1つの問題。それはvoidに戻ります。だから私はこれを使用するときに戻り値を得ることができますか? – ZionKing

関連する問題