iOS7中BOOL的奇怪行为

Guy*_*ood 0 boolean objective-c ios ios7

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

BOOL myBool

if (myBool) {
  NSLog@"My Bool is YES";
}
Run Code Online (Sandbox Code Playgroud)

即我假设如果myBool相当于说myBool是YES.

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

iOS7下有什么变化吗?

编辑

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

Sul*_*han 7

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

你得到一些编译器警告吗?

  • @Ohnomycoco`Project` - `Build Settings` - `Apple LLVM 5.0 - 警告 - 所有语言` - `Unitialized Variables`. (2认同)