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

前端之家收集整理的这篇文章主要介绍了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.f2er.com/swift/326203.html

猜你在找的Swift相关文章