我正在制作一个iPhone应用程序,我想做一个宽屏检测,所以我制作了一堆#define,我想用它做一个if声明。
// Device and Widescreen Detection
#define IS_WIDESCREEN ( fabs( ( double )[ [ UIScreen mainScreen ] bounds ].size.height - ( double )568 ) < DBL_EPSILON )
// iPhone
#define IS_IPHONE ( [ [ [ UIDevice currentDevice ] model ] isEqualToString: @"iPhone" ] ) || ( [ [ [ UIDevice currentDevice ] model ] isEqualToString: @"iPhone Simulator" ] ) )
#define IS_IPHONE_5 ( IS_IPHONE && IS_WIDESCREEN )
// iPod Touch
#define IS_IPOD ( [ [ [ UIDevice currentDevice ] model ] isEqualToString: @"iPod touch" ] )
#define IS_IPOD_5 ( IS_IPOD && IS_WIDESCREEN )
// iPad
#define IS_IPAD (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)我想发表一份声明说
if (IS_IPHONE_5) {
...
} else {
...
}问题是if语句返回一个错误,而XCode一直告诉我这样做
if (IS_IPHONE_5 {
...
} else {
...
}或者这个
if IS_IPHONE_5 {
...
} else {
...
}否则就会产生错误。写这个的正确方法是哪一种?
发布于 2013-07-31 02:56:23
您在IS_IPHONE宏定义中缺少一个括号。你有:
( [ [ [ UIDevice currentDevice ] model ] isEqualToString: @"iPhone" ] ) || ( [ [ [ UIDevice currentDevice ] model ] isEqualToString: @"iPhone Simulator" ] ) )但你应该:
( ( [ [ [ UIDevice currentDevice ] model ] isEqualToString: @"iPhone" ] ) || ( [ [ [ UIDevice currentDevice ] model ] isEqualToString: @"iPhone Simulator" ] ) )要查找这些错误,您可以很容易地使用来自菜单Product -> Generate Output -> 预处理文件的命令。这样,您的预处理宏将被展开,您将能够看到最终的代码,因此哪里是错误。

https://stackoverflow.com/questions/17960783
复制相似问题