Swift API Availability Checking

在开发的过程中,难免我们会用到新的API,如果处理不当的话,对于低于该版本的设备在运行该应用的时候可能会奔溃,为了防止出现这种情况,我们需要在运行时判断API是否可用。

iOS9中引进了新的View class,叫做UIStackView,它是一个View容器(可分为水平布局和垂直布局),与其他View不同的是,该View会自动管理内部view的布局,而无须编码实现自动布局,同时细心的你会发现,在Storyboard文件的右下角会多出一个叫做Stack的按钮(和Align,Pin,Resolve Autolayout issues并列),如图所示:

如果你对它比较感兴趣,可以点击这里

由于这个类只在iOS9以后出现,为了同时兼顾iOS9以前的设备,我们可以使用这种方法来判断该类是否可用。

if (NSClassFromString("UIStackView") != nil) {
    // UIStackView is available
} else {
    // UIStackView does not exist.
}

通过向函数NSClassFromString传入类名,根据返回值判断当前环境是否支持该类。返回nil代表该类不存在,否则该类可用。该方法有一个不好的地方就是参数是字符串,可能会打错类名,比如NSClassFromString("UIStackview")。

在Swift 2以后,苹果引进了API Availability Checking,在Xcode7项目里如果使用到了新的API,编译器会根据用户指定的Deployment Target判断该类,方法,或者属性是否可用,如果不可用的话会给出一个编译错误,然后你可以根据提示修正该错误。下面是对上面代码的一个替换。

if #available(iOS 9.0, *) {
    // UIStackView is available
} else {
    // Fallback on earlier versions
}

参考资料:http://www.hackingwithswift.com/new-syntax-swift-2-availability-checking

参考资料:https://developer.apple.com/videos/wwdc/2015/?id=106

时间: 2024-12-21 12:12:57

Swift API Availability Checking的相关文章

swift api帮助文档中文 目录列表

欢迎来到 Swift    关于Swift    Swift之旅语言指南    基础知识    基本操作    字符串和字符    集合类型    控制流    函数    闭包    枚举    类和结构体    属性    方法     标     继承     初始化     反初始化     ARC     可选链接     类型转换     嵌套类型     扩展     协议     泛型     高级操作符 语言引用     关于语言引用     词法结构     类型     表

在Swift中检查API的可用性

http://www.cocoachina.com/swift/20150901/13283.html 本文由CocoaChina译者ALEX吴浩文翻译自Use Your Loaf博客 原文:Checking API Availability With Swift Swift 2改进了检查API可用性的方法,使其更加容易.安全. 回顾Objective-C的方法 在看Swift之前,让我们简要回顾一下我们之前用Objective-C检查SDK可用性的方法. 检查类和框架的可用性 iOS 9作为一

Swift与Objective-C API的交互

互用性是让 Swift 和 Objective-C 相接合的一种特性,使你能够在一种语言编写的文件中使用另一种语言.当你准备开始把 Swift 融入到你的开发流程中时,你应该懂得如何利用互用性来重新定义并提高你写 Cocoa 应用的方案. 互用性很重要的一点就是允许你在写 Swift 代码时使用 Objective-C 的 API 接口.当你导入一个 Objective-C 框架后,你可以使用原生的 Swift 语法实例化它的 Class 并且与之交互. 初始化 为了使用 Swift 实例化 O

Swift互用性:与 Objective-C 的 API 交互(Swift 2.0版更新)-备

本页包含内容: 初始化 可失败初始化 访问属性 方法 id 兼容性(id Compatibility) 空值和可选值 扩展(Extensions) 闭包(Closures) 比较对象 Swift 类型兼容性 动态分发 轻量级泛型 Objective-C 选择器(Selectors) 互用性是让 Swift 和 Objective-C 相接合的一种特性,使你能够在一种语言编写的文件中使用另一种语言.当你准备开始把 Swift 融入到你的开发流程中时,你应该懂得如何利用互用性来重新定义并提高你写 C

Swift学习笔记 - 教程学习四 控制流(Control Flow)

4 控制流(Control Flow) 4.1 For-In Loops 用for-in循环遍历一个序列,如一组连续数.数组元素.字符串中字符等. for index in 1...5 { print("\(index) times 5 is \(index * 5)") } // 1 times 5 is 5 // 2 times 5 is 10 // 3 times 5 is 15 // 4 times 5 is 20 // 5 times 5 is 25 index是一个在每次循

Awesome Swift

Awesome Swift A collaborative list of awesome Swift resources,inspired by awesome-python and listed on awesome-awesomeness. Feel free to contribute! Awesome Swift Demo Apps iOS Apple Watch OS X Dependency Managers Guides Editor Support Vim Libs Anima

《转》OpenStack对象存储——Swift

OpenStack Object Storage(Swift)是OpenStack开源云计算项目的子项目之一,被称为对象存储,提供了强大的扩展性.冗余和持久性.本文将从架构.原理和实践等几方面讲述Swift. Swift并不是文件系统或者实时的数据存储系统,它称为对象存储,用于永久类型的静态数据的长期存储,这些数据可以检索.调整,必要时进行更新.最适合存储的数据类型的例子是虚拟机镜像.图片存储.邮件存储和存档备份.因为没有中心单元或主控结点,Swift提供了更强的扩展性.冗余和持久性.Swift

Sample Testlink API client in python

""" Testlink API Sample Python Client implementation """ import xmlrpclib class TestlinkAPIClient: # substitute your server URL Here SERVER_URL = "http://localhost/testlink/lib/api/xmlrpc.php" def __init__(self, dev

swift晋级之路 - optional类

做oc开发也有差不多一年的时间了,最近事件不是特别紧,也是时候来学习一下swift了,虽然swift api和oc是一样的但是还是有好多语法上的区别,最近在看网易公开课上得斯坦福的ios开发课程也会持续更新一下课程内容 optional类,也就是可选类型,optional是oc中没有的类型,是swift引进的一种全新的类型,他得特点是可以有值,也可以没有值,当它没有值的时候就是nil,swift的nil和oc中的也是不一样的,oc中只有对象才能为nil,而在swift中,当基础类型没有值的时候也