如果我创建一个像这样的简单类
@interface table : NSObject {
NSMutableArray *array;
}
@end
在Init方法中我调用:array = [[NSMUtableArray alloc] init];
在dealloc方法中,我打电话给:[array release];
但我有一个记忆韭菜因为从不调用dealloc方法。我必须自己调用dealloc方法吗?
答案 0 :(得分:1)
当对象的保留计数达到0时,它将被清理的运行时间标记。当运行时清理对象并回收内存时,调用dealloc使其有机会清除对实例变量等的任何其他对象引用。这有帮助吗?如果你想看到它,请输入
NSLog(@"%s", _cmd);
或dealloc方法开头的断点并观察调试器/控制台。
答案 1 :(得分:0)
没有。你永远不应该直接致电[self dealloc]
。是什么让你觉得-dealloc
从未被调用?
编辑:您永远不需要致电[table dealloc]
。您应该发送dealloc
消息的唯一时间是覆盖dealloc
并致电[super dealloc]
。
答案 2 :(得分:0)
这看起来都很正确。这里的类table
的实例将在完全释放时调用它的dealloc
方法。因此,如果您使用类的方式导致整个table
实例泄漏,那么您只会有泄漏。
但是,当然,相同的规则适用于使用table
类的任何类。