available
Swift有两种属性,分别为适用于声明和适用于类型的属性。available属于声明属性.
将 available 用于声明时,表示该声明的生命周期与特定的平台和操作系统版本有关。
对于函数,类,协议等,可以使用 @available 声明这些类型的生命周期依赖于特定的平台和操作系统版本。而 #available 用在判断语句中(if, guard, while等),在不同的平台上做不同的逻辑
available 经常与参数列表一同出现,该参数列表至少有两个特性参数,参数之间由逗号分隔.这些参数由以下这些平台名字中的一个起头:
• iOS
• iOSApplicationExtension
• macOS
• macOSApplicationExtension
• watchOS
• watchOSApplicationExtension
• tvOS
• tvOSApplicationExtension
当然,你也可以用一个星号(*)来表示上面提到的所有平台。 其余的参数,可以按照任何顺序出现,并且可以添加关于声明生命周期的附加信息,包括重要事件。 下面直接上代码
@available
@available(iOS 9, *) func myMethod() { // do something }
@available(iOS 9, *) 是一种简写形式。全写形式是 @available(iOS, introduced=9.0). introduced = 9.0 参数表示指定平台(iOS)从 9.0 开始引入该声明。为什么可以采用简写形式呢?当只有 introduced 一种参数时,就可以简写成以上简写形式。同理:@available(iOS 8.0, OSX 10.10, *) 这样也是可以的。表示同时在多个平台上(iOS 8.0 及其以上;OSX 10.10及其以上)的可用性。
另外, @available 还有其他一些参数可以使用,分别是:
deprecated 参数表示指定平台从哪一版本开始弃用该声明
obsoleted 参数表示指定平台从哪一版本开始废弃该声明。当一个声明被废弃后,它就从平台中移除,不能再被使用
message 参数用来提供文本信息。当使用被弃用或者被废弃的声明时,编译器会抛出警告或错误信息。
unavailable 指定平台上是无效的
- renamed 参数用来提供文本信息,用以表示被重命名的声明的新名字。当使用声明的旧名字时,编译器会报错提示新名字
#available
if #available(iOS 8, *) { // iOS 8 及其以上系统运行 } guard #available(iOS 8, *) else { return //iOS 8 以下系统就直接返回 }
更多推荐
可用性 available 简析
发布评论