@available用法最正解(转)

Swift 2.0 中,引入了可用性的概念。对于函数,类,协议等,可以使用@available声明这些类型的生命周期依赖于特定的平台和操作系统版本。而#available用在判断语句中(if, guard, while等),在不同的平台上做不同的逻辑。

一、@available
@available放在函数(方法),类或者协议前面。表明这些类型适用的平台和操作系统。看下面一个例子:

@available(iOS 9, *)
func myMethod() {
    // do something
}

@available(iOS 9, )必须包含至少2个特性参数,其中iOS 9表示必须在 iOS 9 版本以上才可用。
另外一个特性参数:星号(
),表示包含了所有平台
另外一个特性参数:星号(*),表示包含了所有平台,目前有以下几个平台:

iOS
iOSApplicationExtension
OSX
OSXApplicationExtension
watchOS
watchOSApplicationExtension
tvOS
tvOSApplicationExtension
一般来讲,如果没有特殊的情况,都使用 * 表示全平台。

@available(iOS 9, *)是一种简写形式。全写形式是@available(iOS, introduced=9.0)
introduced=9.0参数表示指定平台(iOS)从 9.0 开始引入该声明。为什么可以采用简写形式呢?当只有introduced这样一种参数时,就可以简写成以上简写形式。

@available还有其他一些参数可以使用,分别是:

deprecated=版本号:从指定平台某个版本开始过期该声明
obsoleted=版本号:从指定平台某个版本开始废弃(注意弃用的区别,deprecated是还可以继续使用,只不过是不推荐了,obsoleted是调用就会编译错误)该声明
message=信息内容:给出一些附加信息
unavailable:指定平台上是无效的
renamed=新名字:重命名声明

二、#available

available 用在条件语句代码块中,判断不同的平台下,做不同的逻辑处理

if #available(iOS 8, *) {
        // iOS 8 及其以上系统运行
}
guard #available(iOS 8, *) else {
    return //iOS 8 以下系统就直接返回
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 转自:http://swift.gg/2016/04/13/swift-qa-2016-04-13/?utm_so...
    archyly阅读 3,989评论 0 1
  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AI阅读 16,056评论 3 119
  • 奶奶您今天过的好吗?她已不在认识我了。看着她我的泪水一直在眼眶里打转。我使劲的往回憋。 “弟弟弟...
    独立的蜗牛阅读 2,350评论 0 0
  • (图书馆门前) “阿花,六年了,好久不见!” “阿法,好久不见,天哪,你怎么跑来了?” “想来看你了,就过来了,怎...
    守望阿法阅读 3,696评论 0 0
  • “人生最大的喜悦是每个人都说你做不到, 你却完成它了。 少自制压力,随缘,尽力,达命,问心无愧。”
    misspig阅读 1,081评论 0 0

友情链接更多精彩内容