阅读更多
在Xcode 6.3中,我们为Objective-C添加了新语言特性nullability注解。这个特性给Objective-C提供了表达API使用null和non-null统一的方式,相当于Swift语言中的Optional类型。Xcode 7继续为Objective-C与Swift之间更加自然的通信引入轻量级的泛型模型。泛型使得这两种语言能够可靠地融合并分享带有特定类型元素的集合。

这些特性对任何使用Swift和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代码。这些改变源于改进后的头文件信息。例如,正在重写的一个方法,其参数和结果类型更加精确,方法转换的过程中将会被更新与之匹配。

在今年的WWDC的Swift and Objective-C Interoperability视频14:30处,对Objective-C所作的改进做了详尽的描述。注意,该视频使用的是Xcode 6.3中的__nullable语法,并非更新的Xcode 7中用的_Nullable。了解更多nullability注解的信息,可以看看Nullability and Objective-C。了解Swift 2.0和Objective-C中轻量级泛型更多信息,可以看看Xcode 7 Release Notes

(翻译/白云鹏 友情审校/汪洋)


原文链接:Apple Developer's Blog
1
0
评论 共 1 条 请登录后发表评论
1 楼 xieen 2015-08-21 12:24
 

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 详说单片机解密技术

    导语:目前,芯片解密主要应用在PCB抄板方面,PCB抄板除了对电路板复制的简单概念,还包括了板上一些加密芯片的解密。随着概念和知识保护的加强,芯片解密会慢慢向为程序研究服务方向发展,而不是现在的产品复制方向...

  • 详说Swift 2.0中的错误处理

    Swift 2.0主要在语言基本语法、安全性和格式美观度这三方面进行了改进。除了这些新的功能特性,还有对语法的优化、修饰及美化,最后是Swift 1.x中最具影响力的错误处理机制。

  • 单片机与DSP中的详说单片机解密技术

    导语:目前,芯片解密主要应用在PCB抄板方面,PCB抄板除了对电路板复制的简单概念,还包括了板上一些加密芯片的解密。随着专利概念和知识保护的加强,芯片解密会慢慢向为程序研究服务方向发展,而不是现在的产品复制...

  • 不算“真正的语言”?详说Swift 2.0中的错误处理

    苹果公司在今年的全球开发者大会(Worldwide Developers Conference, WWDC)上宣布推出Swift2.0,该语言的首席架构师Chris Lattner表示,Swift 2.0主要在语言基本语法、安全性和格式美观度这三方面进行了改进。...

  • zabbix4.0学习八:JMX有能监控哪些监控项详说

    在使用jmx监控tomcat时一直好奇MBean是从哪里得到的,原来使用java的 监视和管理控制台可以查看。 Jconsole: JAVA 监视和管理控制台简介 远程连接tomcat 打开tomcat/bin/catalina.sh文件,在#!/bin/sh下面添加如...

  • dede3.1分页文字采集过滤规则详说(图文教程)

    dede3.1分页文字采集过滤规则详说(图文教程)

  • dede3.1分页文字采集过滤规则详说(图文教程)续四

    dede3.1分页文字采集过滤规则详说(图文教程)续四

  • dede3.1分页文字采集过滤规则详说(图文教程)续二

    dede3.1分页文字采集过滤规则详说(图文教程)续二

  • web性能优化:详说浏览器缓存

    如果某些文件会被定期生成,当有时内容并没有任何变化,但Last-Modified却改变了,导致文件没法使用缓存 有可能存在服务器没有准确获取文件修改时间,或者与代理服务器时间不一致等情形 Etag 的实现 在node 的...

  • LearnOpenGL从入门到入魔(3):绘制纹理

    LearnOpenGL从入门到入魔(1):OpenGL简介 LearnOpenGL从入门到入魔(2):绘制2D图形 LearnOpenGL从入门到入魔(3):绘制纹理 LearnOpenGL从入门到入魔(4):绘制3D图形 LearnOpenGL从入门到入魔(5):简单滤镜效果 ...

  • 《docker高级篇(大厂进阶):1.Docker复杂安装详说》包括:安装mysql主从复制、安装redis集群

    《docker高级篇(大厂进阶):1.Docker复杂安装详说》包括:安装mysql主从复制、安装redis集群

  • 硬盘详说.pdf

    硬盘详说.pdf

  • Android Studio 使用xmlns:app 但 代码不提示问题的解决

    我们在编写我们的xml布局文件的时候我们可能会...我们一般来说在写代码的时候都会有代码提示,比如说 但是我们在用这里的app的时候却遇到了这样一个尴尬的境地,就是说我们输入app之后只出现下面的界面

  • 使用 vue-cli 3.0 快速创建项目 (两种方法:代码方式和图形化创建项目)

    vue-cli 是一个官方发布 vue.js 项目脚手架,使用 vue-cli 可以快速创建 vue 项目。这篇文章将会从实操的角度,介绍整个搭建的过程。 本快速创建项目方法都是基于 node.js 和 cnpm 的基础上进行的。 安装准备 node...

  • CSS专题(五):详说链接的伪类A hover等

    一 背景  关于伪类,或链接伪类,可能我们都知道a标签的一些写法,a:hover,a:focus,a:visited,然后写下不同的样式,表示链接在各种状态下的表现。我们可能也遇到过input:focus的写法,表示输入框遇到了焦点的样式...

  • 数学建模拟合与插值.ppt

    数学建模拟合与插值.ppt

  • [net毕业设计]ASP.NET教育报表管理系统-权限管理模块(源代码+论文).zip

    【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。

  • mysql相关资源.txt

    mysql相关资源.txt

  • 利用HTML+CSS+JS的国漫分享网站(响应式)

    此项目为一个HTML+CSS+JS的国漫分享网站,用户可以在此网站中观看自己喜欢的国漫。此网站共有4个页面,分别为首页,最新动态,热门推荐,分类。页面动漫图片齐全,内容可更改。可用于期末课程设计或个人课程设计。

Global site tag (gtag.js) - Google Analytics