#available 和 @available 的作用与区别的介绍

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 ·

(1)
上一篇 2023-04-18
下一篇 2023-04-23

发表回复

登录后才能评论