2009-12-08 129 views

回答

6

我不确定您建议使用哪些宏。我一直以为找到的版本号,这样它会compatiable未来和以前版本的标准方法是使用

NSString* versionNumber = [[UIDevice currentDevice] systemVersion] 

这使得它作为一个的NSString如@“2.0”或@“2.2。 1“

有版本常量描述正在使用的基础类的版本,NSFoundationVersionNumber但我不确定这将在旧版和未来的代码中有多可靠。

+0

打败我回答:P要补充一点,他们最有可能参考的宏是预处理器宏(#define)。这不是它的工作方式,但我可以看到人们如何认为版本将以这种方式定义。 – Jay 2009-12-08 02:19:54

+1

预处理器宏可让您基于您定位的iPhone操作系统版本进行条件编译,但无法检测到应用程序正在运行的iPhone操作系统版本。举个例子:#if __IPHONE_OS_VERSION_MIN_REQUIRED> = __IPHONE_2_0 – 2009-12-08 05:34:09

5

查找范围Availability.h,具体的陈述:

#define __IPHONE_2_0  20000 
#define __IPHONE_2_1  20100 
#define __IPHONE_2_2  20200 
#define __IPHONE_3_0  30000 
#define __IPHONE_NA  99999 

而且不要忘记阅读巨人头注释。 预处理器宏绝对是通过os版本来区分你的代码的最安全的方法。

+0

我相信这些是为iPhone应用程序编写库,但不适用于应用程序本身。但这可能是麦克风所暗指的。但我相当确定这是编译而不是运行时版本检测。 – 2009-12-08 03:49:25

+0

是的 - 它只是编译时。 – CajunLuke 2009-12-08 12:16:33

+0

如果使用Twitter或云服务的代码,此方法非常有用。开发人员为Mac OS和iPhone创建自己的“库”。当涉及到用户界面时,这个makros确实有帮助。非常感谢! – JackPearse 2011-03-03 14:13:12

相关问题