[英]iPhone memory management: a release after setting self.someProperty = nil
我正在阅读Apple已发布的LazyTableImages代码 ,并且为此(在NSOperation子类中)做了一些工作:
- (void)dealloc {
[myProperty release];
[myProperty2 release];
}
- (void)main {
//
// Parse operation undertaken here
//
self.myProperty = nil;
self.myProperty2 = nil;
}
我的想法是, 在将属性设置为nil之前调用 dealloc
情况下 ,他们会这样做。
我的想法在这里正确吗? 由于self.myProperty = nil
有效地释放了myProperty
, 因此释放是否不必要 ?
我在这段代码中注意到的一件事是,它们并没有release
dealloc
所有保留对象,而只是release
其中一些对象,这确实是造成我混乱的原因。
干杯
在dealloc
之后,您无法执行self.myProperty = nil
甚至[myProperty release]
。 知道为什么? 因为self
不再存在。
至于您的问题,看来dealloc
中的发行是不必要的,但是在dealloc
方法中清理实例变量仍然是一种好习惯。
编辑
正如Peter在评论中指出的那样,如果-main
方法从未执行过,则必须在-dealloc
中使用release语句; 没有它们,您将泄漏内存。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.