Swift 2.2发布了
2016-03-24 本文已影响475人
eaa1d39d22a8
3月22号,Apple发布了新款的iPhone SE和9.7英寸的iPad Pro。同时,对开发者来说,Apple更新了Xcode至7.3版本,并自Swift开源以来,发布了第一个版本更新Swift 2.2。
Swift版本历史回顾
在了解Swift 2.2新特性前,我们先大概回顾下Swift历史版本发布的时间线及特性。
发布时间 | 版本记录 | 描述 |
---|---|---|
2014/06/02 | Swfit发布 | WWDC2014,Apple发布了Swfit及iOS 8,但此时Swift只是Beta版本,不稳定,中间经历了各种Beta版本迭代。 |
2014/09/10 | 1.0 GM | 1.0 GM版本开始,开发者可以将Swift编写的应用提交到App Store。 |
2014/10/16 | 1.1 | 1.1版本及之前版本Swift与Objective-C混编还不是很顺畅,如Xcode Swift自动补全各种崩溃,版本升级导致的各种编译错误。 |
2015/02/10 | 1.2 | 随Xcode 6.3 Beta和iOS 8.3 Beta发布,Swift继续语法增强 & bug改进,Objective-C增加nullability关键字提升与Swift的交互。 |
2015/06/09 | 2.0 | WWDC2015,Apple发布了Swift 2.0及iOS 9 beta版本,并宣布在年底开源。Swift 2.0新增guard、异常处理、协议可扩展、#available、defer等新特性。同时, Objective-C也增加轻量级泛型支持和__kindof关键字。 |
2015/10/05 | 2.1 | Swift2.1增加了与C语言的交互性(枚举、union、位域),函数和闭包具有协变性和逆变性。 |
2015/12/05 | Swift开源 | Swift开源,同时开源了三大库:Swift Complier & Standard Library、Swift Package Manger、Swift Core Library |
2016/03/22 | 2.2 | Swift 2.2主要是小的改进及性能提升(下面详细描述),并包含了对linux平台的支持,不过目前仅支持Ubuntu 14.04和Ubuntu 15.10。 |
2016年秋 | 3.0 | 敬请期待,WWDC 2016,Swift 3.0承诺会保持 ABI(Application Binary Interface)的稳定性:保证ABI 稳定性意味着,即便源代码语言发生了变化,3.0以后的版本与3.0兼容。Swift Core Libraries发布。 |
敬请期待 | 4.0 | 未知,关于最新的进展可参考swift-evolution 。 |
Swift 2.2新特性
详细更改目的及原因可参考swift-evolution链接。
// 可以使用in关键字作为参数名,需要使用`转义下
func addView(`in` superView: UIView) {
}
// typealias之前有两个用处
// 1.为一个已经存在的类型取个别名。
// 2. 在协议中作为一个类型的占位名称
// 但两种用户完全不同意义,对第2种用途改用associatedtype关键字
protocol Prot {
associatedtype Container : SequenceType
}
extension Prot {
typealias Element = Container.Generator.Element
}
// 增加了对Tuple的== 、!=操作符,不用再去自定义
let singer = ("Taylor", "Swift")
let alien = ("Justin", "Bieber")
if singer == alien {
print("Matching tuples!")
} else {
print("Non-matching tuples!")
}
// 增加判断swift语言版本的方法
// 其它可用形式#if swift("2.2")、#if swift(2.2)、#if swift(2, 2)
#if swift(>=2.2)
print(">=2.2")
#else
print("<2.2")
#endif
// 以下三个函数在调用时可以通过参数名进行区分
extension UIView {
func insertSubview(view: UIView, at index: Int)
func insertSubview(view: UIView, aboveSubview siblingSubview: UIView)
func insertSubview(view: UIView, belowSubview siblingSubview: UIView)
}
// 增加#selector表达式(之前直接使用字符串"doSomething"来表示),#selector会做一些内部的静态检查是否该selector存在,同时暴露给
control.sendAction(#selector(MyApplication.doSomething), to: target, forEvent: event)