NSObject पद्धति का उपयोग करना -(id)awakeAfterUsingCoder:(NSCoder *)decoder
एक उदाहरण के रूप, प्रलेखन कहते हैं:स्वत: संदर्भ गणना के साथ स्वयं को जारी करने के लिए नया पैटर्न क्या है?
एक वस्तु की अनुमति देता है, डीकोड किए जाने के बाद, खुद के लिए किसी अन्य वस्तु विकल्प। उदाहरण के लिए, एक ऑब्जेक्ट जो फ़ॉन्ट का प्रतिनिधित्व करता है, पर डीकोड किया जा रहा है, खुद को छोड़ दें और अपने जैसा ही फ़ॉन्ट विवरण स्वयं मौजूद एक मौजूदा ऑब्जेक्ट को वापस कर दें। इस तरह, अनावश्यक वस्तुएं समाप्त हो सकती हैं।
आम तौर पर आप
[self release];
return substitutedObject;
एआरसी के साथ
कर आप इस लाइन को छोड़ना होगा। यह रिसाव नहीं होगा? या मुझे सिर्फ मेरे लिए मूल वस्तु जारी करने के लिए एनएससीओडर ऑब्जेक्ट पर भरोसा करना चाहिए? यदि ऐसा है तो आपको पहले स्थान पर स्वयं को गैर-एआरसी कोड के साथ स्पष्ट रूप से क्यों रिलीज़ करना होगा?
मुझे नहीं लगता कि self = nil
क्या संकलक प्रलेखन स्वयं के बारे में कहते हैं की रोशनी में सही है: http://clang.llvm.org/docs/AutomaticReferenceCounting.html#misc.self
क्या आप स्पष्ट कर सकते हैं कि आपको स्पष्ट रूप से परिणाम क्यों बनाए रखना है? निश्चित रूप से एआरसी के उद्देश्य को हरा देता है। बाकी सब कुछ जवाब देने के लिए धन्यवाद। – jamesmoschou
@moshy आपका स्वागत है। हाँ - मैंने शुरुआत में उस विवरण को अनदेखा कर दिया। इसका कारण यह है कि 'जागृत करने के बाद कोडर:' एक गैर-स्वामित्व (या स्वत: समाप्त) संदर्भ देता है। इस प्रकार, एआरसी हमारे रिटर्न वैल्यू के लिए हमारे लिए एक रेफ-गिनती कमी दर्ज करता है। हम जो करना चाहते हैं वह प्रभावी रूप से * स्थानांतरण * एक ऑब्जेक्ट से दूसरे ऑब्जेक्ट में संदर्भ है। मैं इसे उपकरणों में चला गया - कोई रिसाव नहीं। कोई लाश नहीं स्पष्ट बनाए रखने के बिना, एक ज़ोंबी संदेश भेजा जाएगा। स्पष्ट रिलीज के बिना - एक रिसाव। इसे अपने लिए आज़माएं ('@ autorelease' ब्लॉक को 'जबकि (1)' में रखें)। – justin
क्या आप विधि 'itattribute __ ((objc_method_family (init)) ('objc_method_family (init)) के साथ' init' परिवार का सदस्य बना सकते हैं) 'और फिर' self' को फिर से सौंपें? –