前言
Swift 3.0是 Swift 加入到开源社区以来,第一次发布大版本。
作为下一代的Apple官方语言,从 Swift 2 开始,已经算是一门比较完善的语言了,完全可以当做iOS和macOS开发的主力,Swift 1 > 2 > 3 的改变,可以看出Apple的思路:
Swift 1 作为一个新的语言,紧抱Objective-C大腿,除了现代的语法,api几乎照搬,以便原来的开发者能够继续以Objective-C思维模式使用Swift开发,尽量吸引新老开发者,至于语言的稳定性,做的并不好。
Swift 2 则巩固1代的成果,提出的新语法寥寥无几(改进了的异常处理,something else…),Apple着力于加强它的稳定性和兼容性,加强了对这个语言的推广,最终在 2.2 版本加入了开源社区,现在已经被移植到了linux平台,甚至曾经被移植到Android上。
在新的 Swift 3 里,语法上的变化已经开始减少了,多的是API的调整,Apple现在做的事,像是在减少Objective-C和C对Swift的影响,新式的API变得简单了,特别是C,Core打头的各种API,大多都被完全用Swift重写了:
let path = CGMutablePath()
path.move(transform: &transform, x: topLeft.x, y: topLeft.y)
总的感觉就是:出道这么久,Swift要自立门户了。
广大开发者们常说:Swift 3.0 - 从精通到重新入门,这一天终于来了。
现在来看看Swift 3 有什么新变化吧,以下只是自己总结,不太全,未完待续↓
API命名简化
优化将方法名切分,将操作中的动词提取,作为方法名.将其余部分作为参数名.
在不引起歧义的情况下,去掉了重复性的名词.
// old code (Swift 2.2)
let content = text.stringByTrimmingCharactersInSet(NSCharacterSet.newlineCharacterSet())
// new code (Swift 3.0)
let content2 = text.trimmingCharacters(in: .newlines)
C式API替换
很多Core打头和常用的C的api,在新的swift中全部重写成了swift风格的,如下:
GCD api
// old way, Swift 2
let queue = dispatch_queue_create("com.test.myqueue", nil)
dispatch_async(queue) {
print(