2015-06-21 68 views
-4

谁呼叫自动释放池或谁管理它。我在函数内部的变量上调用autorelease,但是谁负责管理这个autorelease调用,调用函数或调用者函数,还是谁做的?谁呼叫自动释放池

+0

我不是很确定为什么downvotes。这是一个涉及正确使用autorelease及其操作的合法问题。 (尽管它*在*文档中有介绍..) – user2864740

回答

1

首先,如果您要求autorelease,请不要。停止使用手动内存管理并使用ARC。它比你知道的更多。

好吧,让我们假设你autorelease。然后它被放置在autorelease池中,并且其保留计数保持递增。当自动释放池耗尽时,其保留计数将再次递减。当发生取决于你在谈论什么autorelease池。

  • 如果你确实使这个自动释放池,然后当你告诉它drain它水渠。在ARC下,当我们到达@autoreleasepool{}指令块的末尾时会发生这种情况。

  • 如果它是默认的自动释放池,则运行时会照顾它,并且您对此无知或无法控制。在所有代码完成并且应用程序闲置之后,您可以确信会有漏斗电话,但没有任何保证。

+0

本书将帮助您了解autorelease机制:http://www.apeth.com/iOSBook/ch12.html#_autorelease – matt

+0

感谢Matt,我正在使用ARC,但深入挖掘autorelease ...所以这个问题... –

+0

因此,答案... – matt