我知道您需要小心 autorelease
在 iOS 上。我有一个方法返回一个对象它 alloc
s 这是调用者需要的,所以在这种情况下——据我所知——我需要发送 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
您所描述的是预期的行为。如果您想保留一个对象的时间比这更长,则需要明确保留它。
关于cocoa-touch - 什么时候自动释放实际上会导致 Cocoa Touch 中的释放?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/673372/