Swift 的语法中有很多 #
@
符号声明的API,本篇介绍常用的 #available
和 @available
,在处理版本兼容、平台适用性等工作时会使用到他们。
#available
用于条件语句代码块中,判断不同的平台下,做不同的逻辑处理,#available
会在运行时查询 API 的可用性,示例如下
guard #available(iOS 14, *) else {
return //iOS 14 以下系统则直接 return
}
if #available(iOS 16, *) {
// 满足 iOS 16 系统版本时将执行
} else if #available(iOS 15, *) {
// 满足 iOS 15 系统版本时将执行
} else {
// 不满足以上版本要求时执行,此处则是 iOS 14
}
@available
@available
是一个声明属性,指定声明类或方法所支持的平台,示例:@available(iOS 14, *) ,它包含2个参数,第一个参数 iOS 14
表示只有在 iOS 14 版本以上可用,另外一个参数 *
星号表示适用于所有平台。
参数解析:
- deprecated:过期版本号 – 指从指定版本开始声明该使用方法过期,可用但会警告。
- obsoleted: 已过时版本号 – 从指定版本开始废弃,使用时会编译错误。
- message: 信息 – 使用时的附加信息
- unavailable:指定平台上是不可用的
- renamed:重命名声明
@available(iOS, introduced: 15.0, obsoleted: 14.0, message:"-")
@available(iOS 16, *)
func codeMethod() {
// 这个方法需要 iOS 16 及以上才可以使用
}
@available(iOS 16, *)
class NewClass {
// 这个类需要 iOS 16 及以上才可以使用
}
作为 API
使用者时使用 #available
,用它检查基于平台的功能可用性。有助于应对 API 中的重大更改。
作为 API
设计定义者时使用 @available
,用它指定类和方法的版本、平台的可用性,让使用者更清晰知道是否适用。
本文自 https://www.codeun.com 发布,相应代码均自主编写并严格审阅和测试,完整代码中包含丰富的学习笔记和使用方式、实用技巧。
· 如若转载,请注明出处:https://www.codeun.com/archives/1078.html ·