iOS 三元条件运算符实现仅在设备上挑剔?
我正在使用 iOS SDK 4.2。
我认为三元条件运算在模拟器(iPhone4.1、4.2。iPad 3.2、4.2)上的实现方式与实际设备上不同。因为:
iPad ? xibName = @"MyViewController-iPad" : @"MyViewController";
在这些模拟器上工作完美,但在我的 iPhone 4 (4.1) 上失败,
同时以这种方式编写:
xibName = (iPad) ? @"MyViewController-iPad" : @"MyViewController";
允许它在模拟器和设备上工作。
任何人都可以告诉为什么?这是一个错误吗? “第二版”更好吗?我应该总是这样写吗?
奇怪的是编译器如何接受两者,模拟器如何与两者一起工作,但设备只接受一个......也许是苹果要检查的错误?
I'm using iOS SDK 4.2.
I think that the ternary conditional op is(?) implemented differently on the simulators (iPhone4.1, 4.2. iPad 3.2, 4.2) than on actual devices. Because:
iPad ? xibName = @"MyViewController-iPad" : @"MyViewController";
works perfect on those simulators but fails on my iPhone 4 (4.1)
while writing this way:
xibName = (iPad) ? @"MyViewController-iPad" : @"MyViewController";
allows it to work on both the simulators and device.
Anyone can tell why? Is it a bug? Is the "2nd version" better and i should always write that way?
it's strange how compiler accepts both and simulators work with both but the device only accepts one... maybe a bug for apple to check out?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这些陈述并不等同。
对于
!iPad
(比如,在 iPhone 4 上),第一个语句 xibName 根本不会被设置,我猜你只运行了 iPad 模拟器,而不是 iPhone。These statements are not equivalent.
For
!iPad
( like say, on an iPhone 4 ) with the first statement xibName would not get set at all, I am guessing you only ran an iPad simulator, not an iPhone.