弱IBOutlet UIView属性将变为零

Gon*_*Gon 5 properties weak-references iboutlet ios

我在nib文件中有两个UIViews,我使用IBOutletweak关键字将它们设置为我的视图控制器的属性.

但是,当我使用self.view1我想用来指向笔尖中的视图时,它第一次起作用.但是当我以后使用它时,这两个属性就变成了nil.

使用该strong属性将解决问题.但我总是使用weakIBOutlet物业.为什么在这种情况下它变成零?

Abi*_*ern 7

您需要strong在nib文件中引用顶级项.如果您在笔尖的顶层有两个视图,那么您应该strong引用它们,而不是它们weak.

这些顶级视图的任何子视图都可以IBOutlets使用weak引用进行,因​​为顶级视图保留了对这些子视图的强引用,因此您不必这样做.

大多数情况下,这weak已经足够了,因为存在strong对顶级对象的隐式引用.例如,如果您有一个视图控制器的nib,那么视图控制器对象会保留对顶级视图的强引用,因为它的view属性,这意味着您可以weak保留任何其他对象.