【发布时间】:2011-08-03 20:08:37
【问题描述】:
当我实现dealloc方法时,我曾经写过:
[preopertyX release];
今天我发现了这段代码:
[self.propertyX release];
我不确定这种方法是否完全正确。你有什么想法 ? (我们可以假设 propertyX 是保留和合成的属性)。
【问题讨论】:
标签: objective-c
当我实现dealloc方法时,我曾经写过:
[preopertyX release];
今天我发现了这段代码:
[self.propertyX release];
我不确定这种方法是否完全正确。你有什么想法 ? (我们可以假设 propertyX 是保留和合成的属性)。
【问题讨论】:
标签: objective-c
如果你设置了propertyX,你可以写[self.propertyX release],否则不合成
【讨论】:
self.property = nil; 也会在被释放的对象上触发 KVO。
根据我的理解,您应该将其设置为 nil,或者您可以释放实例变量。
[self setPropertyX:nil]
或
[propertyX release]
您列出的方法可能会产生不必要的副作用,但如果您希望 setter 的副作用发生,我建议设置为 nil。
这里接受的答案:iPhone - dealloc - Release vs. nil 非常好。
这是一场精彩的辩论,非常生动地概述了可供您使用的方法。
http://iphonedevelopment.blogspot.com/2010/09/dealloc.html 随后是 http://www.red-sweater.com/blog/1423/dont-coddle-your-code
【讨论】:
=)设置为 nil 应该非常像释放,但无论您在 setter 中设置了什么副作用