iPhone - 没有方法定义条件变量

时间:2011-02-01 20:14:28

标签: iphone

我有一个名为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条目而没有任何方法,我怎么能这样做呢?

我的想法是将DEVICEIPAD个变量作为整个应用的全局变量,并将它们仅#import "myConstants.h"提供给任何类。

这可能吗?怎么样?

感谢

2 个答案:

答案 0 :(得分:1)

您可以使用预编译器:

#if TARGET_OS_IPHONE
NSString *device_ = @"iphone"; 
#endif TARGET_OS_IPHONE

然后在Build属性中定义指令。

答案 1 :(得分:1)

我不认为#define块在这种情况下会起作用,因为它们在编译时被解释。您的编译器如何知道用户正在使用哪个设备?

我在其中一个使用UIDevice extension的应用中执行某些操作,以便在运行时检测设备类型(在if语句中)。这很好。