繁体   English   中英

在Objective-C中调用dealloc时

[英]When dealloc is called in objective-c

如果我创建一个像这样的简单类

@interface table : NSObject {

    NSMutableArray *array;
}

@end

然后在Init方法中调用: array = [[NSMUtableArray alloc] init]; 在dealloc方法中,我调用: [array release];

但我有一个内存韭菜,因为从未调用过dealloc方法。 我必须自己调用dealloc方法吗?

当对象的保留计数达到0时,将通过运行时间进行标记。 当运行时清理对象并回收内存时,调用dealloc使其有机会清理对实例变量或类似对象的任何其他对象引用。 有帮助吗? 如果要查看它的名称,请放

NSLog(@"%s", _cmd);

或dealloc方法开头的断点,并查看调试器/控制台。

不。您永远不要直接调用[self dealloc] 是什么让您有从未调用-dealloc的印象?

编辑 :您应该永远不需要调用[table dealloc] 您唯一应该发送dealloc消息的时间是覆盖dealloc并调用[super dealloc]

这一切看起来都是正确的。 您的类table实例在完全释放时将调用它的dealloc方法。 因此,只有在您使用类的方式导致table的整个实例泄漏时,您才会泄漏。

但是,当然,相同的规则适用于使用table类的任何类。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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