iOS7中BOOL的奇怪行为

时间:2013-12-09 12:25:44

标签: ios objective-c ios7 boolean

我可能会在这里生气,但以前在使用BOOL时我会做这样的事情:

BOOL myBool

if (myBool) {
  NSLog@"My Bool is YES";
}

即如果myBool相当于说myBool为YES,我会假设。

在iOS7下虽然我看到日志语句触发,即使myBool的值从未明确设置。如果设置为NO或YES,则代码按预期运行。

iOS7下有什么变化吗?

修改

只是补充一点,这个疯狂的时刻是由于我在其他地方从NSUserDefaults boolForKey方法初始化BOOL这一事实,如果找不到该键的值,它将返回NO。

2 个答案:

答案 0 :(得分:7)

如果myBool从未明确设置且它是局部变量,则其值为UNDEFINED。因此,它可以评估为YES或NO。

您是否收到了一些编译器警告?

答案 1 :(得分:0)

BOOL myBool未初始化为代码中的任何值,因此它可能包含任何随机值YES或NO ..

首先将myBool初始化为某个值..