#available标注进行多版本兼容性支持

iOS系统版本迭代,造福了用户,苦了开发者。在以往的开发经历中,最让我们头疼的问题之一就是API的版本兼容。比如我们用了一个iOS8引入的方法,但是APP运行在iOS7上,这时如果不手动进行系统版本检测的话,APP会直接挂掉。而这种问题API编译器也不会给我们任何提示,这样的话只能人工去排查,不仅麻烦效率不高,还会遗漏,导致严重的奔溃问题。
喜大普奔,swift2.0新引入#available机制,解决了之一痛点。新的Swift编译器,会在编译的时候进行检测。比如:UIAlertController这个类是在iOS8.0引入,但是我们项目设置的Deployment Target 是 iOS 7.0。这时候在编译代码的时候,编译器会给我们提出警告:
这里写图片描述
如此强大!发现问题之后,我们就可以通过#available来检测版本:

if #available(iOS 8.0, *) {

  let alert = UIAlertController(title: "test", message: "app", preferredStyle: .Alert)
  UIApplication.sharedApplication().keyWindow?.rootViewController?.presentViewController(alert, animated: true, completion: nil)

} else {

  let alert = UIAlertView(title: "test", message: "app", delegate: nil, cancelButtonTitle: "ok")
  alert.show()

}

以上代码, if #available(iOS 8.0, *) 用于检测当前的系统版本是否在 iOS 8 或以上。如果是的话,那么我们就使用 UIAlertController。 否则,我们还继续使用 UIAlertView。
这充分体现了swift以安全性为本的特性啊。
引用:http://swiftist.org/topics/460#9

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值