【发布时间】:2013-01-28 07:41:56
【问题描述】:
我正在以编程方式创建 UniversalApp。在我的应用程序中,我有 2 个常量类,并且基于设备我想导入我的常量类。但它总是打开“Constants_iPad”类。偶数条件是真还是假。
#ifndef iPad
#define iPad (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
#endif
#ifndef iPhone
#define iPhone (UI_USER_INTERFACE_IDIOM() != UIUserInterfaceIdiomPad)
#endif
#ifdef iPad ------> always excute this condition either True of False.
#import "Constants_iPad.h" // if device is iPad
#else
#import "Constants_iPhone.h" // if device is iPhone
#endif
当我使用 consol 打印时
#ifdef iPad
NSLog(@"iPad = %d",iPad);
#endif
如果条件错误则打印“0”,如果条件为真则打印1
【问题讨论】:
-
问题是预处理指令
#ifdef实际上并没有执行你的语句,而只是找出你的变量iPad是否被定义。在您的代码中,它始终被定义,所以#ifdef iPad始终为真。 -
那么有什么方法可以解决我的问题。如果有,请给我一些指导。
-
我认为这是不可能的。导入语句是编译器在编译时执行的操作。 “#define iPad (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)”是你可以在运行时使用的东西,而不是在编译时
-
因此您无法检查运行时条件并根据真假导入某些内容。在任何地方使用 if 语句或添加一些辅助方法来为您处理此检查
标签: iphone ios objective-c ipad ios-universal-app