可用性 available 简析

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 以下系统就直接返回
}



你可能感兴趣的:(iOS,Swift)