iPhone - 在没有方法的情况下定义条件变量
问题描述:
我有一个名为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
条目没有任何方法?
我的想法是将DEVICE
和IPAD
变量作为整个应用程序的全局变量,并使它们可用于任何类,只需#import "myConstants.h"
。
这可能吗?怎么样?
感谢
答
我不认为#define
块将在这种情况下工作,因为这些是在编译时解释。您的编译器将如何知道用户正在使用哪个设备?
我在我的一个应用程序中使用UIDevice extension在运行时检测设备类型(在if
语句中)。这工作正常。
答
您可以使用预编译的:
#if TARGET_OS_IPHONE
NSString *device_ = @"iphone";
#endif TARGET_OS_IPHONE
等
然后在构建属性定义指令。
不幸的是,这对编译时非常有用,而不是我所需要的运行时间。不管怎么说,还是要谢谢你。 – SpaceDog 2011-02-01 21:50:09
对,我正在为每个设备“MyApp”和“MyApp HD for iPad”设计一个单独的二进制文件。 – MarkPowell 2011-02-01 21:57:26