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

时间:2011-11-25 18:29:23

标签: iphone objective-c boolean

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

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

BOOL b;
if (b) {
    label.text = @"Value = YES";
}
else {
    label.text = @"Value = NO";
}

有趣的是,结果如下:

  

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

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

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

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

感谢。

2 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:4)

未定义未定义的行为。