我是obj-c的新手,无法理解自动释放功能。当我应该使用它时,有人可以向我解释一下吗?它与发布有什么不同。我还需要重置自动释放池吗?怎么样?什么时候?
答案 0 :(得分:6)
通过将对象添加到最顶层autorelease
,调用release
计划在不久的将来某个时间发送NSAutoreleasePool
消息。当池收到drain
消息时,它会将release
发送给已添加到其中的所有对象。
autorelease
用于方法或函数需要放弃对象的所有权的情况,但需要使其暂时不被dealloc
使用,以便其调用者可以对其执行某些操作。它还可用于创建“方便”方法,这些方法包裹alloc
,initWith...
和autorelease
以使分配对象的代码更简单。
答案 1 :(得分:1)
当您向对象发送-autorelease
时,它会被添加到列表(自动释放池)中,当池被释放或耗尽时,列表中的每个对象都会收到-release
消息。 / p>
Autorelease只不过是一种延迟的消息机制。