我有一个名为myConstants.h的文件,用于放置应用程序使用的所有常量。此文件导入任何需要访问其中一个变量的类。
我正在构建一个通用应用程序,如果它们在iPad或iPhone上运行,我需要具有不同值的变量。
我给你一个我的意思的通用例子。
在我的主要代码中,我可能有类似的内容:
self.DEVICE = @"iphone";
self.IPAD = NO;
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
self.DEVICE = @"ipad";
self.IPAD = YES;
}
但这是主代码的定义。如果我需要一个类来使用这两个变量之一,我需要构造复杂的方法来引用主类并在那里读取变量。
我的想法是将其包含在myConstants.h
。
但是,如果myConstants.h只是一个普通文件,其中每一行都是#define
条目而没有任何方法,我怎么能这样做呢?
我的想法是将DEVICE
和IPAD
个变量作为整个应用的全局变量,并将它们仅#import "myConstants.h"
提供给任何类。
这可能吗?怎么样?
感谢
答案 0 :(得分:1)
您可以使用预编译器:
#if TARGET_OS_IPHONE
NSString *device_ = @"iphone";
#endif TARGET_OS_IPHONE
等
然后在Build属性中定义指令。
答案 1 :(得分:1)
我不认为#define
块在这种情况下会起作用,因为它们在编译时被解释。您的编译器如何知道用户正在使用哪个设备?
我在其中一个使用UIDevice extension的应用中执行某些操作,以便在运行时检测设备类型(在if
语句中)。这很好。