我正在以编程方式创建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
答案 0 :(得分:1)
这里的逻辑存在一些问题,但最大的问题是,在程序实际在设备上运行之前,您无法确定用户是在iPad还是iPhone上运行程序(长!)
虽然这实际上并没有帮助你完成你想要做的事情,但它始终导入你的Constants_iPad.h的原因是因为在顶部,你定义了一个名为iPad的宏,然后在下面你说“如果iPad已定义,然后导入此文件“。嗯,总是定义。你刚刚在第二行做到了。
要完成您要执行的操作,您需要包含这两个文件(确保您的定义是唯一的)。
然后,在您的实现文件中使用类似:
的内容if (iPad) {
// Use the iPad definitions to do what you want
} else {
// Use the iPhone definitions
}
答案 1 :(得分:1)
答案 2 :(得分:0)