2011-06-30 9 views
9

वे एक समान रूप से समान कार्य करने लगते हैं: एक नया धागा लॉन्च करना जो उस चयनकर्ता को जल्दी और आसानी से करता है। लेकिन क्या कोई अंतर है? शायद स्मृति प्रबंधन के संबंध में?+ [NSThread detachNewThreadSelector: toTarget: withObject:] और - [NSObject performSelectorInBackground: withObject:] के बीच क्या अंतर है?

+1

अच्छा प्रश्न। मैं यह कहने जा रहा था कि 'perfomSelectorInBackground' पूल से थ्रेड का उपयोग कर सकता है (' libdispatch' के माध्यम से), लेकिन दस्तावेज़ स्पष्ट रूप से कहते हैं कि यह एक नया धागा बनाएगा। तो हाँ, ऐसा लगता है कि 'NSThread' विधि ... –

उत्तर

4

दोनों समान हैं।

आईओएस और मैक ओएस एक्स v10.5 और बाद में, सभी ऑब्जेक्ट्स में एक नया धागा पैदा करने और उनके तरीकों को निष्पादित करने के लिए इसका उपयोग करने की क्षमता है। PerformSelectorInBackground: withObject: विधि एक नया पृथक धागा बनाता है और निर्दिष्ट थ्रेड के लिए प्रविष्टि बिंदु के रूप में निर्दिष्ट विधि का उपयोग करता है। उदाहरण के लिए, यदि आप किसी वस्तु है (चर myObj द्वारा प्रतिनिधित्व) और उस वस्तु एक विधि DoSomething कहा जाता है कि आप एक पृष्ठभूमि सूत्र में चलाना चाहते हैं नहीं है, तो आपको निम्न कोड कि ऐसा करने के लिए इस्तेमाल कर सकते हैं कर सकते हैं:

[myObj performSelectorInBackground:@selector(doSomething) withObject:nil]; 

इस विधि को कॉल करने का प्रभाव वही है जैसा कि आपने डिटेच न्यू थ्रेड सिलेक्टर कहा है: लक्ष्य: withObject: वर्तमान ऑब्जेक्ट के साथ NSThread की विधि, चयनकर्ता, और पैरामीटर ऑब्जेक्ट पैरामीटर के रूप में। नया थ्रेड तुरंत डिफ़ॉल्ट कॉन्फ़िगरेशन का उपयोग करके उत्पन्न होता है और चलना शुरू होता है। चयनकर्ता के अंदर, आपको थ्रेड को कॉन्फ़िगर करना होगा जैसे आप कोई थ्रेड करेंगे। उदाहरण के लिए, आपको एक ऑटोरेलीज पूल सेट अप करना होगा (यदि आप कचरा संग्रहण का उपयोग नहीं कर रहे थे) और थ्रेड के रन लूप को कॉन्फ़िगर करें यदि आपने इसका उपयोग करने की योजना बनाई है। नए धागे को कॉन्फ़िगर करने के तरीके के बारे में जानकारी के लिए

0

मुझे लगता है कि वे समान हैं, - (void)performSelectorInBackground:(SEL)aSelector withObject:(id)arg;NSObject (NSThreadPerformAdditions) श्रेणी में NSThread.h में परिभाषित किया गया है। यह कुछ भी निर्णायक नहीं है, लेकिन यह उस दिशा में सबूत है।

+0

मैंने अभी एक परीक्षण किया है, न ही कोई आपके लिए एक ऑटोरेलीज पूल सेट करता है। –

संबंधित मुद्दे

 संबंधित मुद्दे