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

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

有帮助吗?

解决方案

当的 “自动释放池期满”。

什么这通常意味着,当堆栈展开。

因此,认为它是这样的 - 你的应用程序是事件驱动的。你发送给它的事件 - 他们通过一系列的功能处理。当完成每个功能的回报,并且事件被处理时,自动释放将被调用。

这意味着你可以在对象上指望自己还活着,当你自动释放它,并从功能,它返回到它的调用者。永远不要指望它来处理任何类型的后续事件时左右,或者在外面叫你现有的堆栈帧。

其他提示

来自 iOS 文档

Cocoa 应用程序中的每个线程都维护自己的 NSAutoreleasePool 对象堆栈。当线程终止时,它会自动释放与其自身关联的所有自动释放池。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top