我简要地读了一下ARC并认为好,一切都很强大,代表很弱。
现在我在界面构建器中创建一个视图并制作IBOutlets,而Xcode的默认设置设置为弱。
这个建议似乎有理由,大多数IBOutlets都会想要弱财产吗?
这是因为这些视图(IBOutlets)已被保留,因为它们被附加到其超级视图?我们很少取代IBOutlet观点?
但我认为将它设置为强大并没有什么害处,它有问题吗?
答案 0 :(得分:5)
有关IBOutlet
引用为何应该较弱的讨论,请参阅Resource Programming Guide: Nib Files。我引用了指南:
Outlets通常应该很弱,除了从文件所有者到nib文件中的顶级对象(或者在iOS中,故事板场景中)应该很强的那些。因此,您创建的插座通常应该很弱,因为:
- 例如,您创建到视图控制器视图或窗口控制器窗口的子视图的插座是不暗示所有权的对象之间的任意引用。
- 强大的出口通常由框架类指定(例如,
UIViewController
的视图出口或NSWindowController
的窗口出口。)
对于我自己的两分钱,如果我拥有它,我会制作strong
,或者我需要一个强大的参考,以防所有者离开我需要保留它,这两个都不适用于此。所以,不要问“我为什么不能成功strong
?”,我会问“我为什么要这样做strong
?”如果没有充分的理由这样做,我会让Interface Builder做到这一点并将其设为weak
。
答案 1 :(得分:0)
这只是偏好。弱或赋值的基本原理是超视图,控制器等将在该图中的对象生命周期内保持强引用。
就个人而言,我是老上学,并且赞成强有力的参考 - 即使在这种情况下。有时,使用强引用意味着您可能需要显式地破坏对象子图的组件(例如,在拆除时必须“破坏”所有循环依赖关系)。我只在非常特殊的情况下使用弱者,因为我喜欢一致性;当出现问题时以及在阅读程序时,可以使用较少的变量。