29、理解引用计数

​ 对象回收后,系统会降其占用的内存标记为“可重用”(reuse)。

​ 如果按“引用数”回溯,那么最终会发现一个“根对象”(root object)。在iOS应用程序中,则是UIApplication对象,是程序启动时创建的单例。

​ 调用autorelease会在稍后递减计数,通常是在下一次“事件循环”(event loop)时递减,不过可能会执行得更早一些。此方法可保证对象在跨越“方法调用边界"(method call boundary)后一定存活。(实际上,释放操作会在清空最外层的自动释放池时执行,除非你有自己的自动释放池,否则这个时机指的是当前线程的下一次事件循环。

要点:

  • 引用计数机制通过可以递增递减的计数器来管理内存。对象创建好之后,其保留计数至少为1。若保留计数为正,则对象继续存活。当保留计数降为0时,对象就被销毁了。

  • 在对象生命期中,其余对象通过引用来保留或释放此对象。保留与释放操作分别会递增及递减保留计数

Last updated

Was this helpful?