Sha*_*hah 0 iphone cocoa-touch objective-c cocos2d-iphone
我正在制作一个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)
Run Code Online (Sandbox Code Playgroud)
我想做一个if声明说
if (IS_IPHONE_5) {
...
} else {
...
}
Run Code Online (Sandbox Code Playgroud)
问题是if语句返回错误,XCode一直告诉我这样做
if (IS_IPHONE_5 {
...
} else {
...
}
Run Code Online (Sandbox Code Playgroud)
或这个
if IS_IPHONE_5 {
...
} else {
...
}
Run Code Online (Sandbox Code Playgroud)
否则会出错.这是写这个的正确方法吗?
Jac*_*ack 14
您在IS_IPHONE宏定义中缺少括号.你有:
( [ [ [ UIDevice currentDevice ] model ] isEqualToString: @"iPhone" ] ) || ( [ [ [ UIDevice currentDevice ] model ] isEqualToString: @"iPhone Simulator" ] ) )
Run Code Online (Sandbox Code Playgroud)
但你应该:
( ( [ [ [ UIDevice currentDevice ] model ] isEqualToString: @"iPhone" ] ) || ( [ [ [ UIDevice currentDevice ] model ] isEqualToString: @"iPhone Simulator" ] ) )
Run Code Online (Sandbox Code Playgroud)
要找到这些类型的错误,您可以轻松使用菜单Product - > Generate Output - > Preprocessed File中的命令.通过这种方式,您的预处理器宏将被扩展,您将能够看到最终代码,因此错误在哪里.
