मैं एक वर्ग (नहीं एक उदाहरण) पर नाम से एक चयनकर्ता प्रदर्शन करते हैं और अपनी वापसी मान का उपयोग करने के लिए है। मुझे लौटा हुआ उदाहरण उपयोग करने की ज़रूरत है। जाहिर है, मुझे सामान्य प्रदर्शन मिलता है चयनकर्ता रिसाव का कारण बन सकता है क्योंकि इसका चयनकर्ता चेतावनी अज्ञात है क्योंकि इस परियोजना को एआरसी के साथ संकलित किया गया है।"प्रदर्शन चयनकर्ता रिसाव का कारण बन सकता है" विकल्प जब यह रिसाव करता है?</p> <pre><code>id obj = [objClass performSelector:NSSelectorFromString(methodName) withObject:p1]; </code></pre> <p>चयनकर्ता कक्षा का एक नया उदाहरण बनाता है:
अगर मैं सही ढंग (from the answers here और अन्य), इस उदाहरण में performSelector एक रिसाव का कारण होगा (मुझे सही कर अगर मैं गलत हूँ, तो मैं सिर्फ चेतावनी अक्षम कर सकते हैं और इसके साथ किया जाना) को समझते हैं। चयनकर्ताओं के रूप में इस लागू किया जाता है:
+ (id) objectWithFile:(NSString*)p1
{
return [NSKeyedUnarchiver unarchiveObjectWithFile:p1];
}
जब मैं स्ट्रिंग से चयनकर्ता का उपयोग करने के लिए है और चयनकर्ता बनाता है और वस्तु का एक नया उदाहरण देता है मेरे पास क्या विकल्प हैं?
मैंने एनएसआईएनवोकेशन माना लेकिन इसकी getReturnValue
विधि के लिए मुझे अपना आवंटित बफर प्रदान करने की आवश्यकता है जिसमें वापसी मूल्य संग्रहीत किया जाता है। मुझे यकीन नहीं है कि यह एआरसी और कक्षा विधियों के साथ भी काम करता है, या क्या मुझे बस __bridge_transfer
पर malloc'ed वापसी मूल्य बफर id
पर डाला गया है और यह सब कुछ है।
मुझे अभी तक समझ में नहीं आता है कि आपके मामले में आपको रिसाव क्यों होगा। 'objectWithFile:' एक ऑटोरेलेज्ड ऑब्जेक्ट देता है क्योंकि यह एक आवंटन/प्रतिलिपि/नई विधि नहीं है। –
मुझे यकीन नहीं है कि मैं इसे सही ढंग से समझता हूं। मान लें कि मैं अनारक्षित वस्तु के बजाय [ऑब्जेक्ट नया] वापस लौटाता हूं, वह भी एक ऑटोरेलीज ऑब्जेक्ट देता है लेकिन फिर रिसाव होगा? या रिसाव ** केवल ** तब होता है जब प्रदर्शनकर्ता चयनकर्ता स्वयं को आवंटित करता है, नया या प्रतिलिपि बनाता है? – LearnCocos2D