彼らは合理的に似たような仕事をしているようです。そのセレクタをすばやく簡単に実行する新しいスレッドを起動します。しかし、違いはありますか?メモリ管理に関してはどうですか?+ [NSThread detachNewThreadSelector:toTarget:withObject:]と - [NSObject performSelectorInBackground:withObject:]の違いは何ですか?
答えて
どちらも同じです。
iOSとMac OS X v10.5以降では、すべてのオブジェクトが新しいスレッドを生成し、そのメソッドを使用してメソッドの1つを実行できます。 performSelectorInBackground:withObject:メソッドは、新しいデタッチされたスレッドを作成し、指定されたメソッドを新しいスレッドのエントリポイントとして使用します。あなたには、いくつかのオブジェクトを持っている(変数このmyobjによって表される)と、そのオブジェクトを使用すると、バックグラウンドスレッドで実行したいのdoSomethingというメソッドを持っている場合たとえば、あなたはそれを行うには、次のコードを使用することができますできます
[myObj performSelectorInBackground:@selector(doSomething) withObject:nil];
このメソッドを呼び出す効果は、現在のオブジェクト、セレクタ、およびパラメータオブジェクトをパラメータとして持つNSThreadのdetachNewThreadSelector:toTarget:withObject:メソッドを呼び出した場合と同じです。新しいスレッドは、デフォルト構成を使用してすぐに生成され、実行を開始します。セレクタの内部では、スレッドと同じようにスレッドを構成する必要があります。たとえば、自動解放プール(ガベージコレクションを使用していない場合)を設定し、スレッドの実行ループを使用するように設定する必要があります。新しいスレッドを構成する方法の詳細については
- (void)performSelectorInBackground:(SEL)aSelector withObject:(id)arg;
はNSThread.hのNSObject (NSThreadPerformAdditions)
カテゴリに定義されているので、同じものと見なします。それは決定的なものではありませんが、それはその方向性の証拠です。
私はちょうどテストを行いました、どちらもあなたのために自動解放プールを設定しません。 –
- 1. オブジェクトとNSObjectの違い
- 2. NSUInteger myIDとint myIDの違いは何ですか?
- 3. $と$$の違いは何ですか?
- 4. `##`と `hashCode`の違いは何ですか?
- 5. typedefとの違いは何ですか?
- 6. NodeJS:「./ ..」と「..」の違いは何ですか?
- 7. {}())と{})の違いは何ですか?
- 8. `&`と `ref`の違いは何ですか?
- 9. `==`と `is`の違いは何ですか?
- 10. difftimeと ' - 'の違いは何ですか?
- 11. #{} $ {}と%{}の違いは何ですか?
- 12. ⊕と+の違いは何ですか?
- 13. アペンダーと〜の違いは何ですか?
- 14. "./"と "../"の違いは何ですか?
- 15. "$^N"と "$ +"の違いは何ですか?
- 16. %Qと%{}の違いは何ですか?
- 17. バックスティックと$()の違いは何ですか?
- 18. A`と ``の違いは何ですか[:] `
- 19. NSObject isEqual:とhash default関数は何ですか?
- 20. インスタンス変数とプロパティの違いは何ですか?
- 21. パッケージのインポートobjと何かの違いをインポートパッケージとPythonの何かの違いは何ですか?
- 22. METADATAとMETADATA.jl:違いは何ですか?
- 23. twistdとnohup&:違いは何ですか?
- 24. libspeとlibspe2?違いは何ですか?
- 25. Backbone.jsとPusherapp - 違いは何ですか?
- 26. wp_link_pagesとthe_posts_pagination→違いは何ですか?
- 27. $ dirtyと$ invalid:違いは何ですか?
- 28. XPathの//と?/の違いは何ですか?の使用は何
- 29. フレームとオブジェクトの違いは何ですか?フレームとオブジェクトの違いは何ですか?
- 30. リストと何か([_])と何か(_)の違い
良い質問。私は 'perfomSelectorInBackground'が(libdispatch'を介して)プールからのスレッドを再利用するかもしれないと言うつもりでしたが、ドキュメントは明示的に新しいスレッドを作成すると言います。だからええ、それは 'NSThread'メソッドとまったく同じことをするようです... –