में यह एक रिलीज संदेश भेजने शून्य बनाम करने के लिए एक वस्तु की स्थापना के बीच का अंतर है मेरे पास है वस्तु:क्या dealloc
MyClass *obj= [[MyClass alloc] init];
क्या बीच का अंतर है:
[obj release]; // Only obj own this object.
और:
obj = nil;
करता आईओएस deallocs obj जब मैं सेट obj = नहीं के बराबर?
मैं कुछ समय मैं इसे एक वस्तु को इंगित निर्धारित करते हैं, कुछ समय नहीं है एक सूचक है,। तो, जब मैं एक पॉइंटर जारी करना चाहता हूं तो मुझे यह जांचना चाहिए कि यह शून्य है?
जादुई रूप से जारी किए जाने वाले गुणों के बारे में थोड़ा सा सच नहीं है। यदि आप "बनाए रखने" विशेषता के साथ एक संपत्ति घोषित करते हैं तो आपको इसे स्वयं जारी करना होगा, केवल तभी जब आप इसे "प्रतिलिपि" विशेषता के साथ घोषित करते हैं, तो यह आपके लिए वर्णित तरीके से जारी किया जाता है। Http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjectiveC/Articles/ocProperties.html – dertoni
मुझे लगता है कि उसका अर्थ "असाइन" होना चाहिए, न कि "बनाए रखना"। इसके अलावा, self.obj = someNewValue नहीं होगा, केवीओ श्रोताओं को ट्रिगर करें? –
स्पष्टीकरण के लिए, self.obj = newValue पुराने मान को जारी करता है, यदि आप गुणों का सही उपयोग कर रहे हैं। मैं यह जोड़ना चाहता हूं कि self.obj = newValue [self setObj: newValue] के समान है, जो रिलीज़ होता है (setObj विधि में [oldValue रिलीज़] है)। साथ ही, यदि आप ऑब्जेक्ट को जारी कर रहे हैं, तो क्या आप केवीओ को ट्रिगर नहीं करना चाहते हैं? – andyvn22