相关文章推荐
害羞的蘑菇  ·  安装错误的libc6软件包和坏系统开发者社区·  1 月前    · 
逃课的充电器  ·  Qt-QML-C++交互实现文件IO系统-后 ...·  6 天前    · 
坏坏的西瓜  ·  DB2中常见的SQL语句执行报错信息 - 简书·  1 年前    · 
坚韧的萝卜  ·  java拆分字符串的split方法对比_st ...·  1 年前    · 
活泼的匕首  ·  ESXI |无法打开虚拟机电源, ...·  1 年前    · 
个性的韭菜  ·  WPF实现环(圆)形菜单【WPF开发者】_哔 ...·  2 年前    · 
豁达的生姜  ·  Python数据挖掘项目:构建随机森林算法模 ...·  2 年前    · 
Code  ›  iOS判断系统版本号的四种方法开发者社区
版本号 ios 云系统
https://cloud.tencent.com/developer/article/1904451
踢足球的洋葱
3 月前
Cloudox

iOS判断系统版本号的四种方法

前往小程序,Get 更优 阅读体验!
立即前往
腾讯云
开发者社区
文档 建议反馈 控制台
首页
学习
活动
专区
圈层
工具
文章/答案/技术大牛
发布
首页
学习
活动
专区
圈层
工具
返回腾讯云官网
Cloudox
首页
学习
活动
专区
圈层
工具
返回腾讯云官网
社区首页 > 专栏 > iOS判断系统版本号的四种方法

iOS判断系统版本号的四种方法

作者头像
Cloudox
发布 于 2021-11-23 13:15:16
发布 于 2021-11-23 13:15:16
4.3K 0 0
代码可运行
举报
文章被收录于专栏: 月亮与二进制 月亮与二进制
运行总次数: 0
代码可运行

在iOS开发过程中,如果要使用到一些跟特定系统版本特性有关的功能,或者要适配低版本系统的用户,还有一些方法是新版本系统才有的,有一些方法在新版本中已经弃用了,这都需要对不同系统版本的设备进行分别的处理,而这有个前提就是判断系统的版本号。

判断系统版本号有多种方法,这里都列出来供大家和自己在开发中需要时进行选择使用。

方法一:直接获取系统版本

iOS提供了直接获取系统版本号的方法:

代码语言: javascript
代码 运行次数: 0
运行
复制
NSString *version = [UIDevice currentDevice].systemVersion;
if (version.doubleValue >= 9.0) {
    // 针对 9.0 以上的iOS系统进行处理
} else {
    // 针对 9.0 以下的iOS系统进行处理
}

这种方法应该说也是最常见和常用的方法了。

方法二:通过Foundation框架版本号

iOS系统升级时Foundation框架也会升级版本号,我们可以通过获取Foundation的版本号来判断对应的iOS版本,这个iOS也提供了很直观的宏来进行判断:

代码语言: javascript
代码 运行次数: 0
运行
复制
#if TARGET_OS_IPHONE
#define NSFoundationVersionNumber_iPhoneOS_2_0  678.24
#define NSFoundationVersionNumber_iPhoneOS_2_1  678.26
#define NSFoundationVersionNumber_iPhoneOS_2_2  678.29
#define NSFoundationVersionNumber_iPhoneOS_3_0  678.47
#define NSFoundationVersionNumber_iPhoneOS_3_1  678.51
#define NSFoundationVersionNumber_iPhoneOS_3_2  678.60
#define NSFoundationVersionNumber_iOS_4_0  751.32
#define NSFoundationVersionNumber_iOS_4_1  751.37
#define NSFoundationVersionNumber_iOS_4_2  751.49
#define NSFoundationVersionNumber_iOS_4_3  751.49
#define NSFoundationVersionNumber_iOS_5_0  881.00
#define NSFoundationVersionNumber_iOS_5_1  890.10
#define NSFoundationVersionNumber_iOS_6_0  992.00
#define NSFoundationVersionNumber_iOS_6_1  993.00
#define NSFoundationVersionNumber_iOS_7_0 1047.20
#define NSFoundationVersionNumber_iOS_7_1 1047.25
#define NSFoundationVersionNumber_iOS_8_0 1140.11
#define NSFoundationVersionNumber_iOS_8_1 1141.1
#define NSFoundationVersionNumber_iOS_8_2 1142.14
#define NSFoundationVersionNumber_iOS_8_3 1144.17
#define NSFoundationVersionNumber_iOS_8_4 1144.17
#define NSFoundationVersionNumber_iOS_8_x_Max 1199
#define NSFoundationVersionNumber_iOS_9_0 1240.1
#define NSFoundationVersionNumber_iOS_9_1 1241.14
#define NSFoundationVersionNumber_iOS_9_2 1242.12
#define NSFoundationVersionNumber_iOS_9_3 1242.12
#define NSFoundationVersionNumber_iOS_9_4 1280.25
#define NSFoundationVersionNumber_iOS_9_x_Max 1299
#endif

可以看到,最上面判断了这是iPhone的系统,相应的还有Mac的系统。这些都是NSFoundationVersionNumber这个宏定义的值,我们可以判断它来获取当前设备的系统版本,用法如下:

代码语言: javascript
代码 运行次数: 0
运行
复制
if (NSFoundationVersionNumber >= NSFoundationVersionNumber_iOS_9_0) {
    // iOS 9.0 以上系统的处理
} else {
    // iOS 9.0 以下系统的处理
}

方法三:根据特有的类判断

我们之前说有些类和方法是新版本才有的,要使用的时候要判断一下版本号,但也可以反过来利用这一点,判断有没有这个类从而得知当前的版本号范围。

比如说 UIAlertController 这个类,是iOS 8之后才出现的,用来取代 UIAlertView 和 UIActionsheet 的,如果当前系统没有这个类,说明是低于iOS 8的,可以这么判断:

代码语言: javascript
代码 运行次数: 0
运行
复制
if (NSClassFromString(@"UIAlertController")) { // 存在这个类
    // iOS 8.0 以上系统的处理
} else {
 
推荐文章
害羞的蘑菇  ·  安装错误的libc6软件包和坏系统开发者社区
1 月前
逃课的充电器  ·  Qt-QML-C++交互实现文件IO系统-后继-具体文件IO的实现-天翼云
6 天前
坏坏的西瓜  ·  DB2中常见的SQL语句执行报错信息 - 简书
1 年前
坚韧的萝卜  ·  java拆分字符串的split方法对比_stringutils.splitbywholeseparatorpreservealltokens-CSDN博客
1 年前
活泼的匕首  ·  ESXI |无法打开虚拟机电源, 对象类型需要托管的I/O_随便的运维随笔的技术博客_51CTO博客
1 年前
个性的韭菜  ·  WPF实现环(圆)形菜单【WPF开发者】_哔哩哔哩_bilibili
2 年前
豁达的生姜  ·  Python数据挖掘项目:构建随机森林算法模型预测分析泰坦尼克号幸存者数据 - 掘金
2 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号