首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在if语句中添加#define Objective

如何在if语句中添加#define Objective
EN

Stack Overflow用户
提问于 2013-07-31 02:49:56
回答 1查看 1.5K关注 0票数 0

我正在制作一个iPhone应用程序,我想做一个宽屏检测,所以我制作了一堆#define,我想用它做一个if声明。

代码语言:javascript
复制
// 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)

我想发表一份声明说

代码语言:javascript
复制
if (IS_IPHONE_5) {
...
} else {
...
}

问题是if语句返回一个错误,而XCode一直告诉我这样做

代码语言:javascript
复制
if (IS_IPHONE_5 {
...
} else {
...
}

或者这个

代码语言:javascript
复制
if IS_IPHONE_5 {
...
} else {
...
}

否则就会产生错误。写这个的正确方法是哪一种?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-31 02:56:23

您在IS_IPHONE宏定义中缺少一个括号。你有:

代码语言:javascript
复制
( [ [ [ UIDevice currentDevice ] model ] isEqualToString: @"iPhone" ] )  || ( [ [ [ UIDevice currentDevice ] model ] isEqualToString: @"iPhone Simulator" ] ) )

但你应该:

代码语言:javascript
复制
( ( [ [ [ UIDevice currentDevice ] model ] isEqualToString: @"iPhone" ] )  || ( [ [ [ UIDevice currentDevice ] model ] isEqualToString: @"iPhone Simulator" ] ) )

要查找这些错误,您可以很容易地使用来自菜单Product -> Generate Output -> 预处理文件的命令。这样,您的预处理宏将被展开,您将能够看到最终的代码,因此哪里是错误。

票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17960783

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档