Ios 弱IBUIView属性将变为零
nib文件中有两个UIView,我使用Ios 弱IBUIView属性将变为零,ios,properties,weak-references,iboutlet,Ios,Properties,Weak References,Iboutlet,nib文件中有两个UIView,我使用IBOutlet和weak关键字将它们设置为视图控制器的属性 然而,当我使用self.view1指向nib中的视图时,它第一次起作用。但当我稍后使用它时,这两个属性变成了nil 使用strong属性可以解决此问题。但是我总是对IBOutlet属性使用weak。为什么在这种情况下变为零?您需要对nib文件中的顶级项进行strong引用。如果在nib的顶层有两个视图,那么应该有对它们的strong引用,而不是弱引用 这些顶级视图的任何子视图都可以使用弱引用创建I
IBOutlet
和weak
关键字将它们设置为视图控制器的属性
然而,当我使用self.view1
指向nib中的视图时,它第一次起作用。但当我稍后使用它时,这两个属性变成了nil
使用
strong
属性可以解决此问题。但是我总是对IBOutlet
属性使用weak
。为什么在这种情况下变为零?您需要对nib文件中的顶级项进行strong
引用。如果在nib的顶层有两个视图,那么应该有对它们的strong
引用,而不是弱
引用
这些顶级视图的任何子视图都可以使用弱引用创建IBOutlets
,因为顶级视图保留对这些子视图的强引用,所以您不必这样做
大多数情况下,弱
就足够了,因为有一个对顶级对象的隐式强
引用。例如,如果您有视图控制器的nib,则视图控制器对象将保持对顶层视图的强引用,因为它是view
属性,这意味着您可以对任何其他对象使用弱
保持。如果没有对它的引用,则弱出口将变为nil
。这可能发生在没有超级视图的视图上。但是当我以后使用它时,这两个属性变成了零-意思是,你是如何处理它的?@rmaddy你真的提醒了我。@KumarKl我确实从超级视图中删除了,当我想重新添加它们时,发现它们是零。正如你所说的。我做了一些操作,比如removeFromSuperview
,之后弱属性变为零。感谢@rmaddy,当我看到他的评论时,我意识到我的错误在哪里。