【发布时间】:2010-08-08 06:04:22
【问题描述】:
我是 obj-c 的新手,无法理解 autorelease 函数。有人可以向我解释什么时候应该使用它吗?以及它与发布有何不同。我还需要重置自动释放池吗?如何?什么时候?
【问题讨论】:
标签: iphone objective-c
我是 obj-c 的新手,无法理解 autorelease 函数。有人可以向我解释什么时候应该使用它吗?以及它与发布有何不同。我还需要重置自动释放池吗?如何?什么时候?
【问题讨论】:
标签: iphone objective-c
调用autorelease 会安排release 消息在不久的将来某个时间通过将对象添加到最顶部的NSAutoreleasePool 发送到对象。当池收到drain 消息时,它会将release 发送给已添加到其中的所有对象。
autorelease 用于方法或函数需要放弃其对对象的所有权,但需要暂时防止其被deallocated 以便其调用者可以对其进行操作的情况。它还有助于创建包装 alloc、initWith... 和 autorelease 的“便利”方法,以简化分配对象的代码。
【讨论】:
当您向一个对象发送-autorelease 时,它会被添加到一个列表(自动释放池)中,当该池被释放或耗尽时,列表中的每个对象都会收到一个-release 消息。
自动释放只不过是一种延迟消息机制。
【讨论】: