Objective C Memory Management with ARC -
इस सवाल का पहले से ही एक उत्तर है: < / P>
- 5 जवाब
मैं उद्देश्य के लिए नया हूँ सी और मैं एआरसी को एक पुरानी (गैर एआरसी) ढांचे के भागों को पोर्टिंग कर रहा हूं I मेरा प्रश्न यह है कि, एआरसी अब परिदृश्यों के पीछे बहुत सारी मेमोरी प्रबंधन को संभालता है, क्या कोई भी प्रमुख मेमोरी प्रबंधन सिद्धांत हैं जिन्हें मुझे अभी भी लीक से बचने के बारे में पता होना चाहिए? उदाहरण के लिए मैंने सोचा कि मैंने कहीं पढ़ा है कि एनएसओपरेशन उपवर्ग के 'मुख्य' समारोह में, प्रोग्रामर को उस फ़ंक्शन के लिए एक 'ऑटोर होलपूल' सेट करना चाहिए।
संभवत: दो सबसे बड़ी समस्याएं देखने के लिए हैं 1) चक्र को बनाए रखने, जहां एक्स को बरकरार रखता है और वाई x बरकरार रखता है, इसलिए वे कभी भी मुक्त नहीं होते हैं। यह आमतौर पर ब्लॉक के साथ होता है और 2) कोर फाउंडेशन फ़ंक्शंस (कोर ग्राफ़िक्स इत्यादि) का उपयोग करते समय, उदाहरण के लिए: CGImageCreate
, CGImageRetain
, CGImageRelease
। उन मामलों में आपको अभी भी मेमोरी को मैन्युअल रूप से प्रबंधित करने की आवश्यकता होती है।
चक्र बनाए रखने से रोकने के लिए एक सामान्य पैटर्न, चक्र में होने वाले ऑब्जेक्ट में से एक के लिए एक कमजोर संदर्भ बनाना है। (अक्सर स्वयं) इस तरह से:
<पूर्व> __ कमजोर प्रकार का (आत्म) कमजोर Self = self; [स्वयं उपयोगब्लॉक: ^ {टाइपफ (कमजोरसल्फ) मजबूत एसल्फ़ = कमज़ोर स्वयं; // मजबूत मजबूत के साथ कुछ करना]];
नोट्स: क) ब्लॉक के अंदर एक नया सशक्त आप स्वयं बनाना चाहते हैं, यह सुनिश्चित करना है कि आप ब्लॉक की अवधि के लिए कमजोर स्वयं चर को बनाए रख रहे हैं। अन्यथा, आपके पास ऐसे मामले हो सकते हैं जहां कमजोर स्वयं के ब्लॉक के माध्यम से किसी तरह का हिस्सा नहीं बन जाएगा। कुछ मामलों में, आप एक ऐसी परीक्षा जोड़ना चाह सकते हैं जो कि मजबूत स्वयं अभी भी मौजूद है, और यदि ब्लॉक को पूरी तरह से रद्द नहीं किया गया है ब्लॉक के शुरू होने से पहले कमजोर खुद ही शून्य हो सकता है।
__ कमजोर प्रकार काफ़ी (आत्म) कमजोरसल्फ = स्व; [स्वयं उपयोगब्लॉक: ^ {टाइपफ (कमजोरसल्फ) मजबूत एसल्फ़ = कमज़ोर स्वयं; अगर (! मजबूत स्वयं) वापसी; // मजबूत मजबूत के साथ कुछ करना]];
ख) आपको केवल ऐसा करने की ज़रूरत है जब स्वयं ब्लॉक को बनाए रखेगा (इस मामले में अज्ञात उपयोग के माध्यम से लॉक विधि कर रही है)।
Comments
Post a Comment