繁体   English   中英

iPhone内存管理:设置self.someProperty = nil后的版本

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM