我有一个带有BOOL属性(不是指针)的视图控制器,我认为它是NO或只是垃圾看到,好像它没有在viewDidLoad中分配。 BOOL在需要时分配。当视图控制器被解除分配(我正在使用arc)并稍后重新创建时,如果该BOOL的先前实例值为YES(在VC被解除分配之前),则新实例BOOL变量的初始值也将为YES。发现这很奇怪。
我知道这很奇怪,与此同时我在viewDidLoad中设置了相应的默认值。
更新
请记住,BOOL作为iVar发生了这种情况(我将其更改为属性)并且在分配BOOL之前进行了比较。我把这种奇怪的行为归咎于此。
答案 0 :(得分:0)
对于垃圾,您获得YES
的可能性要大于NO
,因为!=0
的值比==0
更多:)
但是,BOOL
类型的AFAIK实例变量将被初始化为NO
(因为所有的ivars都设置为0),即使我没有查找它,我也认为这也是对于自动合成属性支持ivars,则为true。这说明每次都是NO
。
你是否观察到它总是反映旧的状态,我。即在dealloc之后保留YES
和NO
?我的猜测是上述假设不正确或实例并未真正解除分类。您是否检查过实例地址是否相同?
答案 1 :(得分:0)
原来它们最初是全局变量,它们在实例之间保留它们。