2009-07-30 19 views
12

मेरे पास UINavigation नियंत्रक के साथ मेरी पहली स्क्रीन के रूप में UITableView है।उद्देश्य-सी में क्या बनाए रखा है?

मेरी पहली स्क्रीन में मैं NSLog(@"Home Screen retain Count=%d",[self retainCount]); और यह viewDidLoad कहलाता है जब यह 6 लॉग करता है।

क्या यह सही है?

उत्तर

15

retainCount ऑब्जेक्ट पर बकाया स्वामित्व दावों की संख्या है।

यदि आप इसे एक विधि का उपयोग करते हैं, जिसका नाम "एलोक" या "नया" से शुरू होता है या "प्रतिलिपि" (उदाहरण के लिए, आवंटन, नया ऑब्जेक्ट, या mutableCopy), या यदि आप इसे भेजते हैं तो आप किसी ऑब्जेक्ट का स्वामित्व लेते हैं एक बरकरार संदेश। इन सभी में वृद्धि retainCount।

आप "रिलीज" या "ऑटोरेलीज" का उपयोग करके स्वामित्व छोड़ देते हैं। इन कमीएँ retainCount।

हालांकि आपको कभी भी retainCount के मूल्य पर कोई ध्यान नहीं देना चाहिए, यह सबसे भ्रमित है, सबसे खराब भ्रामकता पर। बस memory management rules का पालन करें - स्वामित्व लें जब आपको किसी ऑब्जेक्ट का संदर्भ रखना होगा और समाप्त होने पर स्वामित्व छोड़ना होगा, और आपको कोई समस्या नहीं होगी।

यदि आप retainCount को देख रहे हैं, तो आप चीजों को गलत तरीके से जा रहे हैं, और आप बस खुद को भ्रमित कर देंगे।

1

यह ठीक लगता है। यह गलत क्यों होगा?

सामान्य रूप से, बनाए रखने की गिनती से चीजों को निर्धारित करने का प्रयास करना एक बुरा विचार है। किसी ऑब्जेक्ट को बनाए रखने की मात्रा के बारे में कोई नियम नहीं हैं। एकमात्र नियम यह है कि प्रत्येक रखरखाव को रिलीज के साथ संतुलित किया जाना चाहिए।