前言

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

1、@available

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

    	@available(iOS 9, *)
    func myMethod() { // do something
    }
    • @available(iOS 9, *) 必须包含至少 2 个特性参数,其中 iOS 9 表示必须在 iOS 9 版本以上才可用。如果你部署的平台包括 iOS 8 , 在调用此方法后,编译器会报错。另外一个特性参数:星号(*),表示包含了所有平台,目前有以下几个平台,一般来讲,如果没有特殊的情况,都使用 * 表示全平台。

      	iOS
      iOSApplicationExtension
      OSX
      OSXApplicationExtension
      watchOS
      watchOSApplicationExtension
      tvOS
      tvOSApplicationExtension
    • @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=版本号 :从指定平台某个版本开始废弃(注意弃用的区别,deprecated是还可以继续使用,只不过是不推荐了,
      obsoleted是调用就会编译错误)该声明
      message=信息内容 :给出一些附加信息
      unavailable :指定平台上是无效的
      renamed=新名字 :重命名声明
    • 以上参数具体可以参考官方文档

2、#available

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

    	if #available(iOS 8, *) {
    
    		// iOS 8 及其以上系统运行
    } else { // iOS 8 以下系统系统运行
    } guard #available(iOS 8, *) else { return // iOS 8 以下系统就直接返回
    }

iOS - Swift available 平台判断的更多相关文章

  1. iOS swift项目IM实现,从长连接到数据流解析分析之Socket

    iOS  swift项目IM实现,从长连接到底层数据解析分析之Socket 一:项目简介:  去年开始接手了一个国企移动项目,项目的需求是实现IM即时通讯功能. * 一期版本功能包括了:       ...

  2. mac下面xcode+ndk7配置cocos2dx & box2d的跨ios和android平台的游戏教程

    这篇教程是介绍如何使用cocos2d-x和box2d来制作一个demo,且此demo能同时运行于ios和android平台.在继续阅读之前,建议您先阅读上一篇教程. 首先,按照上一篇教程,搭建好mac ...

  3. IOS开发中如何判断程序第一次启动(根据判断结果决定是否显示新手操作引导)

    IOS开发中如何判断程序第一次启动 在软件下载安装完成后,第一次启动往往需要显示一个新手操作引导,来告诉用户怎么操作这个app,这就需要在程序一开始运行就判断程序是否第一次启动,如果是,则显示新手操作 ...

  4. iOS swift的xcworkspace多项目管理(架构思想)

    iOS  swift的xcworkspace多项目管理(架构思想) 技术说明: 今天在这里分享 swift下的 xcworkspace多项目管理(架构思想),能为我们在开发中带来哪些便捷?能为我们对整 ...

  5. iOS Swift 模块练习/swift基础学习

    SWIFT项目练习     SWIFT项目练习2 iOS Swift基础知识代码 推荐:Swift学习使用知识代码软件 0.swift中的宏定义(使用方法代替宏) 一.视图  +控件 1.UIImag ...

  6. ios swift 实现饼状图进度条,swift环形进度条

    ios swift 实现饼状图进度条 // // ProgressControl.swift // L02MyProgressControl // // Created by plter on 7/2 ...

  7. Building gRPC Client iOS Swift Note Taking App

    gRPC is an universal remote procedure call framework developed by Google that has been gaining inter ...

  8. iOS Swift WisdomScanKit图片浏览器功能SDK

    iOS Swift WisdomScanKit图片浏览器功能SDK使用 一:简介      WisdomScanKit 由 Swift4.2版编写,完全兼容OC项目调用. WisdomScanKit的 ...

  9. iOS Swift WisdomScanKit二维码扫码SDK,自定义全屏拍照SDK,系统相册图片浏览,编辑SDK

    iOS Swift WisdomScanKit 是一款强大的集二维码扫码,自定义全屏拍照,系统相册图片编辑多选和系统相册图片浏览功能于一身的 Framework SDK [1]前言:    今天给大家 ...

随机推荐

  1. for DEMO

    举例一: [xiluhua@vm-xiluhua][~/shell_script]$ cat forDemo1.sh #======================================== ...

  2. ectouch第十一讲 之 ECTouch 菜单里如何添加文章链接

    1.首先在 ectouch 后台添加好文章分类和文章内容(具体添加方法很简单,这里就不再赘述),然后在菜单管理里添加导航如下(链接地址的获取方法参考步骤 2):2.文章分类列表 域名/mobile/i ...

  3. 工具项与菜单项实现相同的功能(DevExpress)

    1.在工具栏中添加菜单项.如下:在bar1工具栏中添加菜单项this.barButtonMenuItem(包含图标) this.bar1.LinksPersistInfo.AddRange(new D ...

  4. ecshop编辑器fckeditor换百度ueditor编辑器教程

    1.下载uediter编辑器,解压上传目录uediter到根目录/includes/下   2.修改admin/includes/lib_main.php         /**   * 生成编辑器  ...

  5. 深入浅出Java垃圾回收机制

    JVM学习笔记 JVM内存管理和JVM垃圾回收 JVM内存组成结构 JVM内存结构由堆.栈.本地方法栈.方法区等部分组成,结构图如下所示: 1)堆 所有通过new创建的对象的内存都在堆中分配,其大小可 ...

  6. android中文件操作的四种枚举

    1.MODE_PRIVATE:默认操作模式,代表该文件是私有数据,只能被应用自身访问,在该模式下,写入的的内容会覆盖原文件中的内容. 2.MODE_APPEND:该模式会检查文件是否存在,存在就往文件 ...

  7. 【转】【Android】开源项目汇总-备用

    第一部分 个性化控件(View) 主要介绍那些不错个性化的View,包括ListView.ActionBar.Menu.ViewPager.Gallery.GridView.ImageView.Pro ...

  8. YTU 3004: 栈的基本运算(栈和队列)

    3004: 栈的基本运算(栈和队列) 时间限制: 1 Sec  内存限制: 128 MB 提交: 32  解决: 10 题目描述 编写一个程序,实现顺序栈的各种基本运算,主函数已给出,请补充每一种方法 ...

  9. Floyd-Warshall算法,简称Floyd算法

    Floyd-Warshall算法,简称Floyd算法,用于求解任意两点间的最短距离,时间复杂度为O(n^3). 使用条件&范围通常可以在任何图中使用,包括有向图.带负权边的图. Floyd-W ...

  10. office软件

    32位系统office2013: http://pan.baidu.com/s/1bnCqMZ1 64位系统office2013: http://pan.baidu.com/s/1i33rdHF vi ...