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