在取消分配参考资料时,我看到release
和dealloc
正在使用
-(void)dealloc
{
[foo release];
[nar dealloc];
[super dealloc];
}
我的问题是何时使用release
以及何时使用dealloc
?
由于
答案 0 :(得分:54)
除了课程dealloc
方法结尾的[super dealloc]
外,切勿致电dealloc
。 release
方法放弃对象的所有权。当Cocoa对象不再拥有任何所有者时,它可能会被释放 - 在这种情况下,它将自动发送dealloc
消息。
如果你打算编写Cocoa,你需要阅读Memory Management Guidelines。一旦你克服了最初的驼峰,这是非常简单的,如果你不明白该文件中的内容,你会有很多微妙的错误。
答案 1 :(得分:2)
当对象的保留计数变为零时(通过向其发送释放消息的对象),将调用示例中的dealloc
语句。
由于不再需要它,它会通过向它所持有的对象发送release
消息来清理自己。
答案 2 :(得分:1)
你永远不应该明确地调用dealloc(除非它是dealloc方法中的[super dealloc],但这是唯一的例外)。 Objective-C通过引用计数处理内存管理,所以你只需要将你的allocs / retainins与release / autoreleases匹配,让对象解构自己。