美文网首页
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 新特性(可用性检查篇)

    警告功能(官方称之可用性检查),主要用来帮助你找到App中的Bug。因为只有调用系统真正支持的API才安全,如果你...

  • iOS 11新特性 - LargeTitle

    更新了iOS11之后,系统APP大量使用了新的UI风格,那就是iOS11的新特性-Large Title和新的Se...

  • iOS11新特性

    2018-6-26来源:http://iphone.tgbus.com/tutorial/use/201706/2...

  • iOS11新特性

    [TOC] iOS11 大标题 iOS11 导航栏搜索框 iOS11 Safe Area Insets UITab...

  • iOS11新特性

    前言 虽然 WWDC 是一个开发者会议,但是 Keynote 并不是专门针对我们开发者的,它还承担了公司状况说明,...

  • IOS11新特性

    新增框架 Core ML:负责简化和集成机器学习的框架 ARKit:用来创建增强现实 (AR) 应用 Vision...

  • ios11中 navigationbar + uisearchc

    我的情况是希望使用iOS11的新特性largetitle,所以我在appdelegate中设置了全局开启此特性,代...

  • iOS 11 导航栏问题

    前言 iOS11导航栏除了新加入了largeTitles和searchController两个新特性,可能是加入l...

  • iOS11 新特性,如何适配iOS11(一)

    这几天抽空把WWDC的Session看了一些,总结了一些iOS11新的特性,希望对于帮助我们适配iOS11有所帮助...

  • iOS11 SDK新特性- DeviceCheck

    iOS11 SDK新特性- DeviceCheck 通过使用DeviceCheck,你能够在某种程度上追踪到这个手...

网友评论

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

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