您的位置:首页 > 移动开发 > IOS开发

iOS 判断系统版本号的宏定义

2014-10-28 14:37 197 查看
_IPHONE_OS_VERSION_MIN_REQUIRED 

要求最低的系统版本

__IPHONE_OS_VERSION_MAX_ALLOWED

允许最高的系统版本

大多数的文档都没有正确的解释这两个宏定义如何使用

首先明确一个概念,Deploy Target是指编译使用的SDK,BaseSDK是指当前Xcode使用的SDK。

与MIN_REQUIRED和MAX_ALLOWED有关系的是Deploy Target。

举个例子来说明:

比如SDK 3.x

__IPHONE_OS_VERSION_MIN_REQUIRED==__IPHONE_3_0

__IPHONE_OS_VERSION_MAX_ALLOWED==__IPHONE_3_x

通常,__IPHONE_OS_VERSION_MAX_ALLOWED可以代表当前SDK的版本,而__IPHONE_OS_VERSION_MIN_REQUIRED则是同系列最低版本。

在UIDevice的接口中,有一个如下判断,让我思考了很久。

typedef NS_ENUM(NSInteger, UIUserInterfaceIdiom)

 {

#if __IPHONE_3_2 <= __IPHONE_OS_VERSION_MAX_ALLOWED

    UIUserInterfaceIdiomPhone,           // iPhone and iPod touch style UI

    UIUserInterfaceIdiomPad,              // iPad style UI

#endif

};

“__IPHONE_OS_VERSION_MAX_ALLOWED>=__IPHONE_3_2”指最高系统版本大于3.2,也就是说需要3.2以上的SDK才会编译此处。

当然,根据红字出的理解,这句话还可以翻译为“需要系统版本大于3.2”。

开始的时候,我错误的认为应该写成“ __IPHONE_OS_VERSION_MIN_REQUIRED >=__IPHONE_3_2”,是因为不理解iOS
SDK同一系列,例如3.x,4.x,5.x等的兼容模式。

当使用边界作为判断条件的时候,__IPHONE_OS_VERSION_MIN_REQUIRED会比较好用。例如“ __IPHONE_OS_VERSION_MIN_REQUIRED >=__IPHONE_3_0”,表示必须使用3.x及以上的系统。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  宏定义 系统 版本号