के बीच अंतर मैं अपने कई ऐप्स में -performSelectorInBackground
का उपयोग कर रहा हूं, -detachNewThreadSelector
पर अनजान है। अब मैं सोच रहा हूं कि दोनों के बीच मतभेद क्या हैं। क्या वे काफी अधिक परिवर्तनीय हैं, या क्या अंतर और स्थान हैं जहां एक दूसरे से बेहतर है? धन्यवाद![NSThread detachNewThreadSelector:] और -performSelectorInBackground
उत्तर
वे समान हैं। documentation देखें।
performSelectorInBackground: withObject: इस विधि बुला के प्रभाव में एक ही रूप में यदि आप detachNewThreadSelector कहा जाता है: toTarget: withObject: वर्तमान वस्तु, चयनकर्ता, और पैरामीटर पैरामीटर के रूप में वस्तु के साथ NSThread की विधि।
जैसा कि माइकल कहते हैं, वे समान हैं। मुझे लगता है कि प्रदर्शन द्वारा चयन करने के लिए सिलेक्टर इनबैकग्राउंड: ऑब्जेक्ट: एनएसटीएचड के बजाय आसान तरीका है। withObject:
हालांकि, NSThread उसकी प्राथमिकता, stacksize, आदि को नियंत्रित आप व्यवहार को अनुकूलित करना चाहते हैं तो कर सकते हैं, मैं performSelectorInBackground के बजाय NSThread सलाह देते हैं।
दिलचस्प तुम लोग उन्हें
के बीच कोई मतभेद मैं तुम्हें इतना बता दूँगा बाहर बिंदु नहीं कर सकते। हमारे पास एक आईफोन ऐप है जो लॉक हो रहा था, जबकि हमने "इंटरनेट गतिविधि" शीर्ष बार में प्रकटीकरण आइकन और एक विंडो जो "भेज रहा है ..." भेजते समय हमने एक ऑडियो फ़ाइल को सर्वर पर भेजा और performSelectorInBackground:
काम नहीं कर रहा था जब हमने performSelectorInBackground
को detachNewThreadSelector
के साथ बदल दिया, तो यह ठीक काम करता था लेकिन अब यह शिकायत करता है कि उस धागे में चल रहे autoreleased
ऑब्जेक्ट्स पूल द्वारा जारी किए जा रहे हैं .. शायद ऐसा इसलिए है क्योंकि पूल मुख्य धागे में है?
मुझे लगता है कि आपके पास प्रत्येक धागे के लिए एक ऑटोरेलीज पूल होना चाहिए। –
कोरी, यदि आप एक नए धागे पर चल रहे हैं और आप [ऑब्जेक्ट ऑटोरेलीज] का उपयोग कर रहे हैं, तो आपको अपना खुद का ऑटोोरलीज पूल बनाना होगा।
- (void)uploadDataOnThread
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
// do something here...
[pool release];
}
मुझे लगता है कि यह '[पूल नाली]' –
रिलीज और नाली लगभग समान है: http://stackoverflow.com/a/799257/545726 – aiham
- 1. + [NSThread detachNewThreadSelector: toTarget: withObject:] और - [NSObject performSelectorInBackground: withObject:] के बीच क्या अंतर है?
- 2. performSelectorInBackground,
- 3. मेमोरी प्रबंधन और performSelectorInBackground:
- 4. NSThread और UIViewController बातचीत
- 5. ग्रांड सेंट्रल डिस्पैच बनाम NSThread
- 6. मैं एक NSThread कि एक चयनकर्ता तुरंत
- 7. मैं पैरामीटर के रूप में @ चयनकर्ता कैसे पास करूं?
- 8. एनएसटीएचड मुद्दे पर दो तर्कों के साथ चयनकर्ता चयनकर्ता
- 9. कैसे iphone में एक NSThread उप धागा बंद करने के लिए
- 10. आईओएस पृष्ठभूमि थ्रेड शुरू करें
- 11. नींद समारोह
- 12. आईफोन आईओएस अलग थ्रेड में चल रहा है
- 13. एनएसटीएचएड बनाम NSOperationQueue बनाम ??? आईफोन
- 14. उद्देश्य-सी रन लूप रोकने और विधि को फिर से शुरू करने के लिए?
- 15. कैसे त्रुटि को हल करने के?
- 16. तुलना जीसीडी बनाम प्रदर्शन चयनकर्ताबैकग्राउंड: dispatch_async पृष्ठभूमि में नहीं
- 17. AutoreleasePool ब्रेकपॉइंट्स को पकड़ नहीं रहा, कोई चेतावनी नहीं, इंस्ट्रूमेंट्स लीक्स
- 18. iOS4 और पृष्ठभूमि [UIImage setImage:]
- 19. एनएसटीमर, एनएसटीएस्क, एनएसटीएचड और एनएसआरनलूप के बीच बुनियादी अंतर क्या है?
- 20. स्वचालित संदर्भ गणना (एआरसी)
- 21. मैं पृष्ठभूमि थ्रेड पर AVAudioPlayer को कैसे निकाल सकता हूं?
- 22. जीसीडी और केवीओ समस्याएं
- 23. _NSAutoreleaseNoPool त्रुटि
- 24. क्रैश - "संग्रह <CALAYERArray: 0x645dfc0> गणना के दौरान उत्परिवर्तित किया गया था।"
- 25. क्या अनिश्चित काल तक एनएसटीएचड को रोकने का कोई तरीका है और इसे किसी अन्य धागे से फिर से शुरू किया गया है?
- 26. उद्देश्य सी
- 27. उद्देश्य सी में सर्वश्रेष्ठ बहुप्रचार दृष्टिकोण?
- 28. AVFoundation + AssetWriter: छवियों और ऑडियो के साथ मूवी जेनरेट करें
- 29. ऑब्जेक्टिव-सी धागा का उपयोग कर का कारण बनता है: लक्ष्य चयनकर्ता को लागू नहीं करता है
- 30. मुख्य थ्रेड (कोको)
समझ में आता है कि, performSelectorInBackground के बाद से: withObject: toTarget: withObject: NSObject के अंतर्गत सूचीबद्ध है (NSThreadPerformAdditions) श्रेणी ... तो मैं यह सचमुच शर्त सिर्फ detachNewThreadSelector के लिए एक कॉल है पी – Sahil
कृपया काफी करने के लिए सरल मेरी आखिरी टिप्पणी की उपेक्षा, मैं अपने पीछे से बात कर रहा था। – Emmanuel