在objective-c中release和dealloc之间的区别

当释放一个引用时,我已经看到releasedealloc被用作例子

 -(void)dealloc { [foo release]; [nar dealloc]; [super dealloc]; } 

我的问题是什么时候release被使用,何时dealloc被使用?

谢谢

除非在类的dealloc方法结束时使用[super dealloc] ,否则不要调用deallocrelease方法放弃对象的所有权。 当一个Cocoa对象不再拥有任何拥有者时,它可能会被释放 – 在这种情况下,它会自动发送一个dealloc消息。

如果你要编程Cocoa,你需要阅读内存pipe理指南 。 如果你不了解这个文档中的内容,那么一旦你完成了最初的驼峰,它就变得非常简单了,你将会有很多细微的bug。

当对象的保留计数变为零时(通过对象发送释放消息),将调用示例中的dealloc语句。

由于它不再需要,它通过发送release消息给它所持有的对象来清除自己。

你永远不应该显式调用dealloc(除非它在dealloc方法中是[super dealloc],但这是唯一的例外)。 Objective-C通过引用计数来处理内存pipe理,所以你只需要将你的alloc / retain与release / autoreleases进行匹配,然后让对象解构。