Swift 1.2 正式发布 - 带来很多重大改进
Swift 1.2 随着 Xcode 6.3 Beta 正式发布了。这次的 beta 发布包含了对 Swift 编译器显著的改进。还有对 Swift 语言本身的新特性的增加。这篇文章介绍下主要部分。
编译器改进
Swift 1.2 编译器这次的改进更加稳定并且更加高效。这些更改还提供了对 Xcode 中进行 Swift 开发的使用体验的改进。一些比较明显的改进如下:
- 增量构建 - 默认情况下,没有修改过的源文件不会被反复的重新编译,这样能更显著的提升编译构建的速度。大量代码的修改依然还需要重新构建。
- 更快的可执行文件 - Debug 状态下的二进制文件运行明显加快,并且这些新的优化甚至能提升 Release 版本的性能。
- 更好的编译器诊断 - 更清晰的错误和警告消息,还有新的 Fix-it 功能,这样能够更容易的写出合适的 Swift 代码。
- 稳定性提升 修复了那些最常见的编译器崩溃。像是 Xcode 中 SourceKit 相关的警告会更少的被你看到了。
新语言特性
在 Swift 1.2 中,语言已经被优化成更加有安全保证并且行为可预测。我们仍然继续在改进 Swift 和 Objective-C 代码之间的交互。这其中一些比较显著的改变包括:
as!用作可以失败的类型转换 在运行时可以失败的类型转换现在通过as!来表示。- 现在可以在 Objective-C 头文件中表达可空性了 - 在 Clang 中提供了新的 Objective-C 扩展,允许在你的 Objective-C API 中表示指针或Block 的可空性。你可以让你的 Objective-C API 更好的和 Swift 协作,并且提升当你在 Swift 项目中与 Objective-C 代码进行混合和匹配时候的体验。
- Swift 枚举现在可以通过 @objc 关键字导出到 Objective-C 中 - 例如,下面的 Swift 代码:
@objc enum Bear: Int {
case Black, Grizzly, Polar
}
可以这样导入到 Objective-C 中:
typedef NS_ENUM(NSInteger, Bear) {
BearBlack, BearGrizzly, BearPolar
};
let常量更加强大并且一致 - 新的规则是let常量必须在使用之前进行初始化(就像var),并且只能初始化,不能在初始化后重新赋值或修改。
这样就允许这样的模式:
let x : SomeThing
if condition {
x = foo()
} else {
x = bar()
}
use(x)
之前版本的 Swift 中,在这种情况下只能使用 var 关键字,即便后面的代码没有对 x 变量进行任何修改。
- 更强大的
if let语法的 Optional 解包机制 -if let语法,现在可以一次解包多个变量。这样就让你的代码少了很多不必要的嵌套。 - 原生的 Set 数据结构支持 -
NSSet提供的元素唯一的无序集合也像NSArray和Dictionary一样集成进 Swift。
结语
我们努力处理每一个报告上来的 bug,并希望这个 beta 发布版本能尽可能多的解决已知的 bug。 Swift 是同时对语言和工具的重大进步。它可能包含一些和之前代码不兼容的地方,所以 Xcode 6.3 包含了一个代码转换工具。通过点击菜单中的 Convert -> To Swift 1.2 来进行转换。
更多文章请访问: www.theswiftworld.com
更多好文,扫码关注微信公众号:

更多文章请访问: www.theswiftworld.com
Swift 1.2 正式发布 - 带来很多重大改进的更多相关文章
- .NET 4.6.2正式发布带来众多特性
虽然大多数人的注意力都集中在.NET Core上,但与原来的.NET Framework相关的工作还在继续..NET Framework 4.6.2正式版已于近日发布,其重点是安全和WinForms/ ...
- Swift 4.0 正式发布,更快更兼容更好用
Swift4现已正式发布!Swift4在Swift3的基础上,提供了更强大的稳健性和稳定性,为Swift3提供源码兼容性,对标准库进行改进,并添加了归档和序列化等功能. 你可以通过观看WWDC2017 ...
- nopCommerce 3.3正式发布及新增功能改进
nopCommerce是一套优秀开源且基于Asp.net MVC的开源商城系统,nopCommerce 3.x经历长时间多个版本重构优化改进,目前已经趋于完善与成熟! nopCommerce 3.3正 ...
- Swift 4.1 正式发布,新增更多泛型特性支持
Swift 4.1 兼容 4.0,并做了一些改进,其中大部分通过了 Swift Evolution 流程.此次发布,包含了对核心语言的更新,包括新增更多对泛型的支持.新的构建选项,以及对 Swift ...
- 为什么ASCII是7位(导致各家编码的128~256字符都不同,给我带来很多困惑)——在标准ASCII中,其最高位(b7)用作奇偶校验位,附ASCII每个控制符的中文解释
ASCII编码 ASCII是基于拉丁字母的一套电脑编码系统.它主要用于显示现代英语和其他西欧语言.它是现今最通用的单字节编码系统,并等同于国际标准ISO/IEC 646. 请注意,ASCII是Amer ...
- [转]关于 Swift 的一点初步看法
本文转自:http://onevcat.com/2014/06/my-opinion-about-swift/ 感谢原作者 虽然四点半就起床去排队等入场,结果还是只能坐在了蛮后面的位置看着大屏幕参加了 ...
- 不止是联网!教你玩转PC自带Wi-Fi网卡
前言:Wi-Fi对于现在的智能手机来说已经是再熟悉不过的配置了,而主板自带Wi-Fi网卡的设计也越来越普及,但有些玩家可能思维还停留在“Wi-Fi网卡 = 连无线网络用的网卡,我用有线就不需要”的层次 ...
- Swift 3 新特性
原文:What's New in Swift 3? ,作者:Ben Morrow,译者:kmyhy Swift 3将于今年下半年推出,为Swift开发者们带来了很多核心代码的改变.如果你没有关注过 S ...
- swift 新功能介绍
原文链接:http://www.cocoachina.com/applenews/devnews/2014/0617/8857.html 假设你和我一样,准备好好看看苹果的 Keynote,兴奋地准备 ...
随机推荐
- MFC TOOLBAR
m_imagelist.Create(,,ILC_COLOR24|ILC_MASK,,); CBitmap bmp; ;i<;i++) { int a= bmp.LoadBitmapW(IDB_ ...
- Windbg 内存命令 《第四篇》
内存是存储数据.代码的地方,通过内存查看命令可以分析很多问题.相关命令可以分为:内存查看命令和内存统计命令.内存统计命令用来分析内存的使用状况. 一.查看内存 有非常丰富的内存查看命令,它们被容易为d ...
- WP8_(windows phone环境下)上传文件从C#到php接口
在windows phone环境下,将手机上的图片上传到服务端(php环境): 注意事项:在上传的地方,头文件中name,例如name= img,则在php服务端处理时 ,需要约定好 存取一致 php ...
- 图解Javascript上下文与作用域
原文网址:http://blog.rainy.im/2015/07/04/scope-chain-and-prototype-chain-in-js/ 本文尝试阐述Javascript中的上下文与作用 ...
- js动态改变图片热区坐标,手机端图片热区自适应
<img id='banner1' src="images/banner.jpg" usemap="#banner" border="0&quo ...
- 2014年3月1日 Start && Unique Binary Search Trees
早上和面试官聊天, 才发现自己的基础下降的有点厉害, 过去那个飘逸写程序的小青年, 如今有点走下坡路了. 可惜我不服,所以要开始做题,把水平恢复上来,能力是最重要的. 最近在做LeetCodeOJ的题 ...
- 如何实现Android 中断线程的处理
我现在对一个用户注册的功能1.用ProgressDialog将当前页面设成不可操作(保留返回键 退出ProgressDialog)2.用一个线程clientThread执行数据的提交和返回 问题:考虑 ...
- Linux程序分析工具:ldd和nm
ldd和nm是Linux下两个非常实用的程序分析工具.其中,ldd是用来分析程序运行时需要依赖的动态链接库的工具,nm是用来查看指定程序中的符号表信息的工具. 1 ldd 格式:ldd [option ...
- 一、MongoDB的下载、安装与部署
1.什么是MongoDB? 它是介于关系型数据库和非关系型数据库之间的一种NoSQL数据库,用C++编写,是一款集敏捷性.可伸缩性.扩展性于一身的高性能的面向文档的通用数据库. 2.为什么要用Mong ...
- echo -n -e参数详解
echo -n 不换行输出 最终输出 123456 而不是 123 456 echo -e 处理特殊字符 若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出: \a 发出 ...