xfz*_*fze 1 iphone ternary-operator ios ios-4.2 ios-simulator
我正在使用iOS SDK 4.2.
我认为三元条件运算(?)在模拟器(iPhone4.1,4.2.iPad 3.2,4.2)上的实现方式与实际设备不同.因为:
iPad ? xibName = @"MyViewController-iPad" : @"MyViewController";
Run Code Online (Sandbox Code Playgroud)
在那些模拟器上工作得很好但在iPhone 4(4.1)上失败了
这样写的时候:
xibName = (iPad) ? @"MyViewController-iPad" : @"MyViewController";
Run Code Online (Sandbox Code Playgroud)
允许它在模拟器和设备上工作.
谁能说出原因?这是一个错误吗?"第二版"是否更好,我应该总是那样写?
奇怪的是,编译器如何接受这两者并且模拟器同时使用两者,但设备只接受一个......可能是苹果检查的错误?
Dre*_*Dre 10
这些陈述不等同.
// iPad ? xibName = @"MyViewController-iPad" : @"MyViewController";
if ( iPad ) {
xibName = @"MyViewController-iPad";
} else {
@"MyViewController"; // Effectively a NOP
}
// xibName = (iPad) ? @"MyViewController-iPad" : @"MyViewController";
if ( iPad ) {
xibName = @"MyViewController-iPad";
} else {
xibName = @"MyViewController";
}
Run Code Online (Sandbox Code Playgroud)
对于!iPad(比如说,在iPhone 4上)第一个语句xibName根本就没有设置,我猜你只运行了一个iPad模拟器,而不是iPhone.
| 归档时间: |
|
| 查看次数: |
5890 次 |
| 最近记录: |