谁调用自动释放池或谁管理它。我在函数内部的变量上调用autorelease,但是谁管理这个自动释放调用,调用函数或调用函数或者谁管理?
答案 0 :(得分:1)
首先,如果您说autorelease
,请不要。停止使用手动内存管理并使用ARC。它比你知道的更多。
好的,让我们说你做说autorelease
。然后将其放入自动释放池中,其保留计数保持递增。当自动释放池耗尽时,其保留计数将再次递减。当 发生时取决于您正在谈论的自动释放池。
如果你真的制作了这个自动释放池,那么当你告诉它drain
时它会消失。在ARC下,当我们到达@autoreleasepool{}
指令块的末尾时会发生这种情况。
如果它是默认的自动释放池,则运行时会处理它,您无法了解或控制此事。您可以非常肯定在所有代码完成并且应用程序处于空闲状态后会有一个排水调用,但是没有任何保证。