我知道你需要autorelease
在iOS 上小心.我有一个方法,它返回一个alloc
调用者所需的对象,所以在这种情况下 - 据我所知 - 我需要autorelease
在它返回之前发送给被调用者中的对象.
这很好,但是一旦控件返回到手机(即在我的按钮点击处理完毕后),似乎自动释放池已被释放.我怀疑这是应该如何,但我想知道这种情况的最佳做法是什么.
我已经尝试retain
从调用者发送一条消息,以便该对象不会被释放,然后显式释放它dealloc
.
这是最好的方法吗?
自动释放池通常在每次运行循环迭代后释放.粗略地说,每个Cocoa和Cocoa Touch应用程序的结构都是这样的:
Get the next message out of the queue Create an autorelease pool Dispatch the message (this is where your application does its work) Drain the autorelease pool
你描述的是预期的行为.如果你想保持一个对象不长于此,你需要明确地保留它.
使用autorelease
是一种说法,"对象,我不再要你了,但我会把你传递给其他可能想要你的人,所以不要消失." 因此,对象将长时间停留,以便您从方法返回它或将其提供给另一个对象.当某些代码想要保留对象时,它必须通过它来声明所有权retain
.
有关正确使用所需的一切信息,请参阅内存管理指南autorelease
.