监控ARC中的参考计数

时间:2012-06-19 03:07:36

标签: ios automatic-ref-counting

我有点困惑在哪里使用强,哪里使用弱。是否有任何工具可以监控ios中的引用计数?

3 个答案:

答案 0 :(得分:1)

当您希望类保持对象的所有权时,使用强引用,从而防止对象被释放,直到该类不再需要它为止。它通常用于无法廉价复制的对象(例如从服务器下载的数据)或在课堂操作期间至关重要的事物。

当您需要对对象的引用时,使用弱引用。如果对象由其所有者解除分配,则该对象将消失。这通常用于循环引用,而不必担心未解除分配的对象。

答案 1 :(得分:0)

通常,除了避免保留周期之外,您不必使用弱。也就是说,只要你没有两个对象具有强引用,你就可以了。

答案 2 :(得分:0)

只是为了添加其他评论,而强引用周期(以前称为保留周期)对于理解很重要,除非你是相对不常见的将指向父对象的指针传递给子对象。如果你正在做这类事情,你应该确保你理解一些Apple文档中概述的强参考周期(也就是保留周期)的讨论,特别是Acquire Basic Programming SkillsAdvance Memory Management和{{ 3}}。实际上,保留周期的常见示例是,如果您将指向父控制器的指针传递给子控制器。在这些情况下,通常应该使用weak这些指针,否则strong通常非常安全。

弱引用的另一个常见情况是NIB或Storyboard中的控件的IBOutlets,通常也应该是weak。 (如果你通过控制将它们从Interface Builder拖到你的头文件中来制作出口,它会照顾你weak。)无论如何,我会引用Transitioning to ARC,它说:

  

出口通常应该很弱,但文件所有者除外   到nib文件中的顶级对象(或者,在iOS中,一个故事板场景)   这应该是强大的。因此,您创建的插座应该是   默认情况下通常较弱,因为:

     
      
  • 您创建的出口,例如,视图控制器视图或窗口控制器窗口的子视图,是任意的   对象之间的引用并不意味着所有权。

  •   
  • 强大的出口通常由框架类指定(例如,UIViewController的视图出口或NSWindowController的   窗口出口)。

  •