代码之家  ›  专栏  ›  技术社区  ›  user142019

当使用autorelease时,它实际上是什么时候发布的?

  •  1
  • user142019  · 技术社区  · 16 年前

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

    2 回复  |  直到 16 年前
        1
  •  5
  •   Brad    16 年前

    当“自动释放池过期”时。

    这通常意味着堆栈何时展开。

    所以这样想吧-你的应用程序是事件驱动的。将事件发送到它,并通过一系列函数对其进行处理。当每个函数都返回,并且事件已完成处理时,将调用autorelease。

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

        2
  •  1
  •   Aaron Saunders    16 年前

    From the iOS documentation

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