2011-02-01 99 views
1

我有一个名为myConstants.h的文件,用于放置应用程序使用的所有常量。该文件被导入到任何需要访问其中一个变量的类中。iPhone - 在没有方法的情况下定义条件变量

我正在构建一个通用应用程序,并且我有变量,如果它们在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"

这可能吗?怎么样?

感谢

回答

1

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

我在我的一个应用程序中使用UIDevice extension在运行时检测设备类型(在if语句中)。这工作正常。

1

您可以使用预编译的:

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

然后在构建属性定义指令。

+0

不幸的是,这对编译时非常有用,而不是我所需要的运行时间。不管怎么说,还是要谢谢你。 – SpaceDog 2011-02-01 21:50:09

+0

对,我正在为每个设备“MyApp”和“MyApp HD for iPad”设计一个单独的二进制文件。 – MarkPowell 2011-02-01 21:57:26

相关问题