阅读更多
在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的写法,表示输入框遇到了焦点的样式...

  • 下载的资源,下载后解压

    python->exe

  • 前段web开发实战-哪吒2哪吒闹海网站(超酷哪吒主题网页,HTML+CSS 带你畅游)

    宝子们,快来看看这个超炫的哪吒主题网页!用 HTML 和 CSS 精心打造,有酷炫的头部导航、精彩的横幅内容,还有各种哪吒相关人物介绍和超燃票房海报。代码简单易懂,非常适合前端小白学习,一起动手搭建属于自己的哪吒世界吧!

  • Java毕业设计-SpringBoot+Vue的家乡特色推荐系统(附源码、数据库、教程).zip

    Java 项目, Java 毕业设计,Java 课程设计,基于 SpringBoot 开发的,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 包含:项目源码、数据库脚本、软件工具等,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行! 1. 技术组成 前端:html、javascript、Vue 后台框架:SpringBoot 开发环境:idea 数据库:MySql(建议用 5.7 版本,8.0 有时候会有坑) 数据库工具:navicat 部署环境:Tomcat(建议用 7.x 或者 8.x 版本), maven 2. 部署 如果部署有疑问的话,可以找我咨询 Java工具包下载地址: https://pan.quark.cn/s/eb24351ebac4 后台路径地址:localhost:8080/项目名称/admin/dist/index.html 前台路径地址:localhost:8080/项目名称/front/index.html (无前台不需要输入)

  • 2023年专升本计算机复习题.pdf

    2023年专升本计算机复习题.pdf

Global site tag (gtag.js) - Google Analytics