首页 >Swift

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

2015-08-20 10:40 编辑: suiling 分类:Swift 来源:苹果开发者中心

70.jpg

本文由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代码界面就发生了变化:

class UIView : UIResponder {  
init!(frame: CGRect)

var superview: UIView! { get }  
var subviews: [AnyObject]! { get }  
var window: UIWindow! { get }

// ...

func isDescendantOfView(view: UIView!) -> Bool
func viewWithTag(tag: Int) -> UIView!

// ...

var constraints: [AnyObject]! { get }

// ...
}

更改为

class UIView : UIResponder {  
init(frame: CGRect)

var superview: UIView? { get }  
var subviews: [UIView] { get }  
var window: UIWindow? { get }

// ...

func isDescendantOfView(view: UIView) -> Bool  
func viewWithTag(tag: Int) -> UIView?

// ...

var 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

推荐阅读会报编译器警告的Xcode 6.3新特性:Nullability Annotations

搜索CocoaChina微信公众号:CocoaChina
微信扫一扫
订阅每日移动开发及APP推广热点资讯
公众号:
CocoaChina
我要投稿   收藏文章
上一篇:窥探Swift之别样的枚举类型
下一篇:读懂Swift 2.0中字符串设计思路的改变
我来说两句
发表评论
您还没有登录!请登录注册
所有评论(0

综合评论

相关帖子

sina weixin mail 回到顶部