【发布时间】:2013-12-09 14:58:33
【问题描述】:
我定义了一个变量,输出如下。
iPhone 4 >> 4
iPhone 5 >> 5
iPad >> 999
使用的功能如下。
#define iPhone4Or5 [[UIScreen mainScreen] bounds].size.height == 568 ? 5 :
([[UIScreen mainScreen] bounds].size.height == 480 ? 4 : 999)
当我使用 NSLog 变量 iPhone4Or5 时,它为我提供了 iPhone 5 的正确结果,但是当我进行比较时,它给了我错误的结果...
if (iPhone4Or5==999) {
NSLog("Its iPad version");
} else {
NSLog("Its iPhone version");
}
当我在 iPhone 5 或更高版本上运行时,它总是给我 NSLog 作为它的 iPad 版本。
知道为什么我会得到错误的比较结果吗?
我在prefix.pch中定义变量
注意:
如果我执行NSLog("iPhone4Or5==%d", iPhone4Or5),我会得到iPhone4Or5==5的输出
【问题讨论】:
-
当设备/模拟器处于横向模式时你会做什么?身高不就是别的吗? IE。纵向模式的宽度..
-
这里不要使用宏。您使用它们的方式是一种反模式。 ;)
-
如果您坚持使用宏,请确保使用足够的括号以避免运算符优先级问题和其他陷阱。
-
@matsr : 我的应用程序仅是肖像模式 :D :P
标签: ios objective-c c-preprocessor