我什么时候应该使用IBOutlets的弱或强定格符?

时间:2011-11-17 16:16:53

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

  

可能重复:
  Should IBOutlets be strong or weak under ARC?

在文档中,我读到了 " Outlets通常应该是弱的,除了从文件所有者到nib文件中的顶级对象(或者在iOS中,故事板场景中)应该很强的那些。"

实施例?我不明白何时更好地使用"弱"而不是强大的" IBOutlet的财产。

1 个答案:

答案 0 :(得分:24)

一般情况下:如果您正在查看ViewControllers子视图的子视图,那么它应该很弱。只要顶视图存在(在viewDidLoad和viewDidUnload之间),该对象就存在。由于iOS 5 ARC会自动使弱链接无效,当viewController卸载其视图并且视图层次结构被销毁时,您的插座会自动设置为nil。

但也许你想在你的nib文件(模型对象)中创建另一个对象。由于此对象不在视图层次结构下,因此需要使iboutlet变强。如果你使它弱链接,该对象将被自动释放,因为没有其他对象具有强引用它,ARC将释放它并将nil设置为你的IBOutlet。这不是子视图的情况,因为它的超级视图与它有很强的联系。