當我實現dealloc方法我以前寫:是否正確寫[self.someproperty發行]
[preopertyX release];
今天,我發現這個代碼:
[self.propertyX release];
我不知道這種方法是完全正確的。你有什麼想法 ? (我們可以假設propertyX是一個保留和綜合的屬性)。
當我實現dealloc方法我以前寫:是否正確寫[self.someproperty發行]
[preopertyX release];
今天,我發現這個代碼:
[self.propertyX release];
我不知道這種方法是完全正確的。你有什麼想法 ? (我們可以假設propertyX是一個保留和綜合的屬性)。
你可以寫[self.propertyX版本]如果您已設置propertyX保留,否則合成不
從我的理解,您應該將其設置爲無,或者你可以釋放實例變量。
[self setPropertyX:nil]
或
[propertyX release]
你列出可以產生有害的副作用,但如果你希望你的二傳手的側動作的情況發生,我建議設置爲零的方法。
接受的答案在這裏:iPhone - dealloc - Release vs. nil是相當不錯的。
這是一個很好的辯論,概括地說,非常振奮地提供給您的方法。
http://iphonedevelopment.blogspot.com/2010/09/dealloc.html 跟進 http://www.red-sweater.com/blog/1423/dont-coddle-your-code
我想你是在談論分配零。 (使用'=')設置爲零應該非常像釋放,但無論你在設置器中設置的任何副作用 – griotspeak 2011-04-12 12:14:57
明白你的意思。出於我的想法:-)。 – taskinoor 2011-04-12 12:19:43
也許我錯了,但是,如果屬性合成,設置爲nil類似於發佈,因爲自動合成屬性的第一步是: ** [property release]; property = new_value(this case = nil); ** – MatterGoal 2011-04-12 12:39:12
在您看來它表現得像是否我寫[propertyX發佈]? – MatterGoal 2011-04-12 12:07:56
如果屬性爲(複製),則還必須釋放。我會避免使用self.propertyX,因爲有一個機會(一個渺茫的機會,但仍然...),一個子類可能實現一個getter方法,其副作用在-dealloc中是不合適的。 – 2011-04-12 12:40:26
@Sherm Pendley:同樣'self.property = nil;'會觸發對象上的KVO被釋放。 – JeremyP 2011-04-12 13:34:07