Objective-C预处理器指令问题

时间:2012-07-18 11:55:03

标签: ios objective-c c-preprocessor preprocessor-directive

我已经实现了这个代码来定义我的常量:

#ifdef UI_USER_INTERFACE_IDIOM
#define IS_IPAD() (UI_USER_INTERFACE_IDIOM == UIUserInterfaceIdiomPad)
#else
#define IS_IPAD() (false)
#endif

#if (IS_IPAD)
CGFloat const scrollSizeWidth = 768.0f;
CGFloat const scrollSizeHeight = 1004.0f;
#else
CGFloat const scrollSizeWidth = 320.0f;
CGFloat const scrollSizeHeight = 460.0f;
#endif

但我的变量始终显示 320.0f 460.0f

更新 正如k3a用户发现UI_USER_INTERFACE_IDIOM不适用于iOS 8.3,因为它不再是定义它是静态内联。

检查这个答案: link

2 个答案:

答案 0 :(得分:3)

变化:

#ifdef UI_USER_INTERFACE_IDIOM
#define IS_IPAD() (UI_USER_INTERFACE_IDIOM == UIUserInterfaceIdiomPad)
#else
#define IS_IPAD() (false)
#endif

#ifdef UI_USER_INTERFACE_IDIOM
#define IS_IPAD (UI_USER_INTERFACE_IDIOM == UIUserInterfaceIdiomPad)
#else
#define IS_IPAD (false)
#endif

答案 1 :(得分:2)

如果UIUserInterfaceIdiomPad不是预处理程序符号,则它不能用于预处理程序条件。