Swift weekly程序员首页投稿(暂停使用,暂停投稿)

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异常处理协议可扩展#availabledefer等新特性。同时, Objective-C也增加轻量级泛型支持和__kindof关键字。
2015/10/05 2.1 Swift2.1增加了与C语言的交互性(枚举、union、位域),函数和闭包具有协变性和逆变性。
2015/12/05 Swift开源 Swift开源,同时开源了三大库:Swift Complier & Standard LibrarySwift Package MangerSwift Core Library
2016/03/22 2.2 Swift 2.2主要是小的改进及性能提升(下面详细描述),并包含了对linux平台的支持,不过目前仅支持Ubuntu 14.04Ubuntu 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)
上一篇下一篇

猜你喜欢

热点阅读