iphone - Releasing an ivar with the Copy property -


अगर मेरे पास एक वर्ग है

  @interface Foo {NSString * temp; } @ प्रॉपर्टी (नॉनैटोमिक, कॉपी) NSString * temp; @end  

मैं समझता हूं कि असाइनमेंट पर, पुरानी अस्थायी रिलीज हो जाएगी और नया कोड temp = [newTemp copy] का उपयोग करके निर्दिष्ट किया जाएगा। और मेमोरी प्रबंधन नियमों के चलते, आपको [temp release] फ़्यू के डेलोक विधि में करना चाहिए, है ना?

मुझे समझ में नहीं आ रहा है कि क्या होता है अगर सेटर का कभी इस्तेमाल नहीं होता - आपके पास अभी भी [temp release] डेलोक में है, इसलिए यह कुछ को जारी रखने के साथ कुछ जारी करता है 0 का। क्या कोई मेरे लिए यह स्पष्ट कर सकता है?

दो संभावनाएं हैं।

  1. चूंकि आप इसे कभी भी सेट नहीं करते हैं, यह शून्य है रिहाई से शून्य भेजना ठीक है। तो कोई समस्या नहीं है।

  2. आपका init रूटीन temp के लिए एक डिफ़ॉल्ट मान बनाता है। तो यह एक वास्तविक वस्तु है, और इसे रिहाई भेजना भी ठीक है।

कोई भी समस्या नहीं है! किसी भी मामले में आप किसी ऑब्जेक्ट को 0 के एक बनाए रखने की संख्या के साथ संदेश भेज रहे हैं।


Comments