我在nib文件中有两个UIViews,我使用IBOutlet
和weak
关键字将它们设置为我的视图控制器的属性。
但是,当我使用self.view1
我想用来指向笔尖中的视图时,它是第一次有效。但是当我稍后使用它时,这两个属性变为nil
。
使用strong
属性可以解决问题。但我总是使用weak
作为IBOutlet
属性。为什么在这种情况下会变成零?
答案 0 :(得分:7)
您需要对nib文件中的顶级项目进行strong
引用。如果您在笔尖的顶层有两个视图,那么您应该strong
个引用它们,而不是weak
个。
这些顶级视图的任何子视图都可以通过IBOutlets
引用weak
进行,因为顶级视图会对这些子视图保持强烈的引用,因此您不必这样做。< / p>
大多数情况下,weak
足够好了,因为对顶级对象有一个隐式strong
引用。例如,如果您有一个视图控制器的nib,那么视图控制器对象会保留对顶级视图的强引用,因为它具有view
属性,这意味着您可以拥有{{ 1}}抓住任何其他物体。