Post

Swift3升级特点

Swift3升级特点

Swift 3 对比 Swift 2 是一次较大的升级,涉及语法、标准库、API 命名等多个方面。主要变化包括:

1. 语法变化

  • 函数参数标签一致性:函数的第一个参数默认需要标签。例如:

    1
    2
    3
    4
    5
    6
    7
    
    // Swift 2
    func greet(name: String) {}
    greet("Tom")
      
    // Swift 3
    func greet(name: String) {}
    greet(name: "Tom")
    
  • 关键字简化:废弃了 var 参数,改用 inout 来指示可变参数。

2. API 命名规范

Swift 3 统一了 API 命名风格,采用更接近 Swift 风格的命名,强调方法名的动词性。例如:

1
2
3
4
5
// Swift 2
array.insert(0, atIndex: 0)

// Swift 3
array.insert(0, at: 0)

3. Optional 的改进

  • Optional 解包更安全:改进了对 Optional 值的处理,尤其是在字典中。

    1
    2
    3
    4
    5
    
    // Swift 2
    let value = dictionary["key"]
      
    // Swift 3
    let value = dictionary["key"] ?? defaultValue
    

4. Grand Central Dispatch (GCD) 简化

GCD API 变得更简洁,使用闭包和 Swift 风格的接口。

1
2
3
4
5
6
7
8
9
// Swift 2
dispatch_async(dispatch_get_main_queue()) {
    print("Hello")
}

// Swift 3
DispatchQueue.main.async {
    print("Hello")
}

5. Foundation 桥接改进

NSNumberNSString 等类型与 Swift 类型的桥接变得更加自然,避免过多的显式类型转换。

6. 废弃 C 风格的 for 循环

传统 C 风格的 for 循环被废弃:

1
2
3
4
5
6
7
8
9
// Swift 2
for var i = 0; i < 10; i++ {
    print(i)
}

// Swift 3
for i in 0..<10 {
    print(i)
}

7. Core Graphics 类型简化

Core Graphics 类型(如 CGRect, CGPoint 等)变为值类型,不再需要通过函数初始化。

This post is licensed under CC BY 4.0 by the author.