微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Swift-er SDK:简述OC的Nullability Annotations特性

本文由CocoaChina译者 远的风景 翻译自苹果开发者中心
原文:Swift-er SDK


苹果在Xcode 6.3中为Objective-C添加了一项新特性--Nullability Annotations,该特性为Objective-C提供了表达null和non-null API的方法,类似于Swift编程语言中的Optional类型。

通过为Objective-C引入轻量级的泛型模式,Xcode 7继续致力于让Objective-C和Swift之间的通信变得更加自然。泛型使得Objective-C和Swift之间更加安全地理解和共享包含特定类型元素的集合。

这项功能对使用Swift和Objective-C混编的APP非常有用,但是开发者每天还是使用Objective-C代码更多一点:Objective-C中的框架构成了Apple SDK。为了改善Swift和Objective-C的使用体验,我们进行了全公司范围内的努力,在SDK的头文件中都提供了这样的信息。在Xcode 7中,你会发现几乎所有常见框架现在都指定了API Nullability注释,以及其集合类型的元素。这样Swift代码界面就发生了变化:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
classUIView:UIResponder{
init!(frame:CGRect)
var superview:UIView!{get}
subviews:[AnyObject]!{get}
window:UIWindow!{get}
//...
funcisDescendantOfView(view:UIView!)->Bool
funcviewWithTag(tag:Int)->UIView!
//...
constraints:[AnyObject]!{get}
//...
}

更改为

init(frame:CGRect)
superview:UIView?{get}
subviews:[UIView]{get}
window:UIWindow?{get}
funcisDescendantOfView(view:UIView)->Bool
funcviewWithTag(tag:Int)->UIView?
constraints:[NSLayoutConstraint]{get}
最后一个重点是Xcode 7中将代码转换成Swift 2的工具。该工具位于在Xcode的Edit菜单下--Convert > To Latest Swift Syntax。通过必要的编辑操作,该工具可将一个使用Swift 1.2编写的项目转换成符合Swift 2.0规则的代码。这些改变源自于改进后的头文件信息。比如,如果你重载一个参数和结果类型更加准确的方法,那么migrator将会在转换的过程中更新方法以便与之进行匹配。

苹果对Objective-C的改善和提升已经在WWDC上详细说明了,可参看视频14:30处Swift and Objective-C Interoperability这一节,不过视频中使用的是Xcode 6.3 __nullable语法,而不是Xcode 7的_Nullable语法。关于Nullability Annotations的更多信息,请查看Nullability and Objective-C这篇文章。更多关于Swift 2 and Objective-C轻量级泛型的内容,请参看Xcode 7 Release Notes

原文地址:https://www.jb51.cc/swift/326203.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐