iPhone - 设备上的不同默认布尔值

Ale*_*lan 4 iphone boolean objective-c

我最近在模拟器上完成了一些完美的代码工作,并搞砸了设备.为什么? - 这很简单,但我无法解释这个解释.

我做了一点测试,创建了一个新的基于视图的应用程序,为标签添加了标签和插座,并在viewDidLoad中编写了这段代码:

BOOL b;
if (b) {
    label.text = @"Value = YES";
}
else {
    label.text = @"Value = NO";
}
Run Code Online (Sandbox Code Playgroud)

有趣的是,结果如下:

iOS模拟器(4.2):值=无
iOS模拟器(4.3):值=无
iPod Touch 2G(4.2.1)值= YES
iPhone 3G(4.2.1)值= YES

这表明了什么? - 对我来说,它看起来像在设备上,默认的布尔值是YES,在模拟器上,默认的布尔值是NO.

任何人都可以澄清是否是这种情况?如果有人能解释这种行为,我会非常感兴趣.

我对问题的解决方案感兴趣,显然可以通过NO手动设置所需的默认值(在我的情况下)来解决.

谢谢.

joe*_*ick 5

Objective-C只是C的超集,在C中声明这样的变量只是在堆栈上给它内存.在声明变量时,变量不会设置为任何变量,因此堆栈中的最后一个变量现在位于变量中b.

简而言之,它是未定义的,并且会因实现而异.这就是规范所说的.