如何使用宏检测iPhone操作系统版本
我不确定您建议使用哪些宏。我一直以为找到的版本号,这样它会compatiable未来和以前版本的标准方法是使用
NSString* versionNumber = [[UIDevice currentDevice] systemVersion]
这使得它作为一个的NSString如@“2.0”或@“2.2。 1“
有版本常量描述正在使用的基础类的版本,NSFoundationVersionNumber
但我不确定这将在旧版和未来的代码中有多可靠。
查找范围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版本来区分你的代码的最安全的方法。
我相信这些是为iPhone应用程序编写库,但不适用于应用程序本身。但这可能是麦克风所暗指的。但我相当确定这是编译而不是运行时版本检测。 – 2009-12-08 03:49:25
是的 - 它只是编译时。 – CajunLuke 2009-12-08 12:16:33
如果使用Twitter或云服务的代码,此方法非常有用。开发人员为Mac OS和iPhone创建自己的“库”。当涉及到用户界面时,这个makros确实有帮助。非常感谢! – JackPearse 2011-03-03 14:13:12
打败我回答:P要补充一点,他们最有可能参考的宏是预处理器宏(#define)。这不是它的工作方式,但我可以看到人们如何认为版本将以这种方式定义。 – Jay 2009-12-08 02:19:54
预处理器宏可让您基于您定位的iPhone操作系统版本进行条件编译,但无法检测到应用程序正在运行的iPhone操作系统版本。举个例子:#if __IPHONE_OS_VERSION_MIN_REQUIRED> = __IPHONE_2_0 – 2009-12-08 05:34:09