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手动设置所需的默认值(在我的情况下)来解决.
谢谢.
Objective-C只是C的超集,在C中声明这样的变量只是在堆栈上给它内存.在声明变量时,变量不会设置为任何变量,因此堆栈中的最后一个变量现在位于变量中b.
简而言之,它是未定义的,并且会因实现而异.这就是规范所说的.
| 归档时间: |
|
| 查看次数: |
1084 次 |
| 最近记录: |