objective-c autorelease

时间:2010-08-08 06:04:23

标签: iphone objective-c

我是obj-c的新手,无法理解自动释放功能。当我应该使用它时,有人可以向我解释一下吗?它与发布有什么不同。我还需要重置自动释放池吗?怎么样?什么时候?

2 个答案:

答案 0 :(得分:6)

通过将对象添加到最顶层autorelease,调用release计划在不久的将来某个时间发送NSAutoreleasePool消息。当池收到drain消息时,它会将release发送给已添加到其中的所有对象。

autorelease用于方法或函数需要放弃对象的所有权的情况,但需要使其暂时不被dealloc使用,以便其调用者可以对其执行某些操作。它还可用于创建“方便”方法,这些方法包裹allocinitWith...autorelease以使分配对象的代码更简单。

答案 1 :(得分:1)

当您向对象发送-autorelease时,它会被添加到列表(自动释放池)中,当池被释放或耗尽时,列表中的每个对象都会收到-release消息。 / p>

Autorelease只不过是一种延迟的消息机制。