美文网首页
iOS11 新特性(可用性检查篇)

iOS11 新特性(可用性检查篇)

作者: Zombie_Coder | 来源:发表于2017-11-12 15:52 被阅读84次

    警告功能(官方称之可用性检查),主要用来帮助你找到App中的Bug。因为只有调用系统真正支持的API才安全,如果你在旧系统中调用新版本API,那么你的APP很有可能崩溃或其他意外,过去官方建议查询“Objective-C”运行时来确认API是否适用,但这个方法很难进行测试,也很容易出错,而且它需要不同的语法来检查每项全局变量、函数、类实例方法和类方法。如果适用Swift的开发者,可能在想这有什么?Swift有一个统一的语法#available可以在运行时,用于查询API的可用性,而且编译器甚至可以在编译时捕捉缺失的可用性,然而,Xcode9的出现,将弥补这一遗憾。

    1. @ availableXcode9Swift可用性检查带入了OC,同步判断当前iOS系统是否满足需求。例如:
      假如说你有一个App,你想把它配置回iOS_10中,并且你决定利用iOS11_Vision框架中全新的人脸检测API,当你将API添加至你的App并构建时,你会收到一个编译警告,如图:
      编译警告.png
      这个警告告诉你,这些API只适用于iOS_11或更新的系统中。你可以通过使用新的@available结构查询API的可用性。
      API的可用性.png
    2. 我们也可用利用@ available来判断当前系统是否满足我们的某些条件:
    if (@available(iOS 11, *)) {
        NSLog(@"当前设备系统版本 大于等于11.0");
    } else if (@available(iOS 10, *)) {
        NSLog(@"当前设备系统版本 大于等于10.0");
    } else {
        NSLog(@"当前设备系统版本 小于10.0");
    }
    
    1. API可用性宏;如果你想编写一个只能在iOS_11或更新的系统上使用的一整套方法,这个时候我们的可用性宏API_AVAILABLE恰好迎合了你的需求。
      可用性宏.png
      (1.) 我们先来定义一个API可用性宏
      自定义可用性宏.png
      (2.) 接下来我们在iOS_10的系统上调用一下我们刚刚定义的接口
      调用可用性宏警告.png
    2. 如果在类之前声明 API_AVAILABLE(ios(11)) 就是对该类添加了系统版本约束


      为类声明系统版本.png
    3. 针对runtime 或者 c/c++方法中,也有对应判断系统版本方法,相似@avalibale语法__builtin_available去判断
      运行时.png
      对类的约束:
      对类的约束.png

    小结:苹果鼓励你升级最新版本Xcode,使用最新SDK和操作方法,但是也不妨碍回归老版本SDK,这时候@available方法在编译时候 ,会被忽略不做警告提示。

    相关文章

      网友评论

          本文标题:iOS11 新特性(可用性检查篇)

          本文链接:https://www.haomeiwen.com/subject/oignmxtx.html