弱IBOutlet UIView属性将变为零

时间:2014-03-26 04:04:37

标签: ios properties weak-references iboutlet

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

但是,当我使用self.view1我想用来指向笔尖中的视图时,它是第一次有效。但是当我稍后使用它时,这两个属性变为nil

使用strong属性可以解决问题。但我总是使用weak作为IBOutlet属性。为什么在这种情况下会变成零?

1 个答案:

答案 0 :(得分:7)

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

这些顶级视图的任何子视图都可以通过IBOutlets引用weak进行,因为顶级视图会对这些子视图保持强烈的引用,因此您不必这样做。< / p>

大多数情况下,weak足够好了,因为对顶级对象有一个隐式strong引用。例如,如果您有一个视图控制器的nib,那么视图控制器对象会保留对顶级视图的强引用,因为它具有view属性,这意味着您可以拥有{{ 1}}抓住任何其他物体。