什么时候我们可以拥有我们创造的所有物体-ARC

时间:2014-02-03 07:59:39

标签: ios objective-c cocoa automatic-ref-counting

我已经读过这个“继续坚持你创造的所有对象,然后ARC将永远无法释放它们。”我不明白这一点。有人可以举例解释这个场景我们什么时候能举行我们创建的所有对象。

2 个答案:

答案 0 :(得分:2)

只要没有释放对象,它就会处于活动状态,从而释放其内存。使用手动引用计数,您必须为每个保留调用一个版本,直到retainCount达到0.使用ARC,编译器插入将根据变量弱/强类型自动释放。

所以,要抓住一个对象,它需要

  • 定义为强
  • 另一个生物需要持有一个 参考它

只要你有一个对象的引用而它没有定义为弱对象,它就会存在。

例如,可以在Mike Ash blog找到一个很好的介绍和解释。

答案 1 :(得分:1)

“保持”对象意味着永远不会释放它们(即在变量,列表等中保留引用)。由于这些对象未被释放(减少其引用计数),因此它们无法被发布池删除并在应用程序的整个生命周期内消耗内存。如果你创建了更多这样的对象,你很快就会耗尽可用内存,你的应用程序就会崩溃。

使用手动引用计数,很容易忘记正确释放对象,因此它们被保存在内存中,即使根本没有使用它。

使用ARC时,这已经改变,因为引用计数会自动增加/减少(当此计数达到0时对象将被释放)。