使用自动释放时,它什么时候实际发布?

1 memory-management objective-c autorelease foundation

有时候我想知道什么时候有东西被自动释放.我在各种对象的dealloc中添加了一个NSLog,但我找不到任何有用的东西.

使用自动释放时什么东西会释放?它是不可预测的,还是有一些额外的线程在运行?谢谢.

Bra*_*rad 5

当"自动释放池到期"时.

这通常意味着,当堆栈被解开时.

所以想一想 - 你的应用程序是事件驱动的.您可以获得发送给它的事件 - 并通过一系列功能处理它们.当每个函数返回并且事件处理完毕后,将调用autorelease.

这意味着当你自动释放它时,你可以指望一个对象仍然存活,并将它从一个函数返回给它的调用者.在处理任何类型的后续事件时,或者在现有堆栈帧之外调用时,不要指望它存在.