Swift 3.0 + xcode 8新特性

  1. ++ , -- 操作符更改成 += 1,-= 1;
    for 循环 :
    for(int i = 0 ; i < 100 ; i++){} 改成 for in:
    for i in 1...100 {} 或者改成 for-each 循环(闭包)
    (1...100).forEach { print( $0) }
    2.Currying 移除柯里化函数:
    func foo(x:Int)(y: Int)
    3.移除变量参数:
    func 中不再允许声明var 参数:
    func 用参数变量(var i: Int)//不会改变调用者的变量, 只在函数中有效
    如果一定要观察调用者变量的变化情况
    func 用inout变量(inout i:Int)//会改变调用者的变量,可以观察
    4.函数调用第一个参数必须加标签
    之前,函数调用可以不加第一个参数标签
    func foo(x:Int,y:Int)
    foo(1,y:2)
    Swift 3, 函数调用必须要加第一个参数的标签
    func foo(x:Int, y:Int)
    foo(x:1,y:2)
    如果swift的代码是 3.0之前写的, 不想每个调用方法去添加缺少的参数, 可以吧方法的参数改成省略: fun foo(_ x:Int, y:Int) 调用方法可以使用 foo(1,y:2)
    5.Selector, KeyPath 不再以String的形式出现
    给一个Button实例增加一个单机方法:
    aButton.addTarget(...,action:“tap”,…) 改写成:
    aButton.addTarget(...,action:#selector(self.tap()),…)
    获取一个Student类的变量girlFriendName:
    aStudent.valueForKeyPath(“girlFriendName”)
    aStudent.value (forKeyPath: #keyPath(Student.girlFriendName))
    6.去掉NS前缀
    去除NS前缀的类型
    提升的类型,完整列表(https://github.com/apple/swift-evolution/blob/master/proposals/0086-drop-foundation-ns.md)
    7.圆周率
    MI_PI:原来使用
    .pi: swift 3使用
    Float.pi
    Double.pi
    CGFloat.pi
    8.GCD
    从C式的面向过程 到 Swift式的面向对象用法
    let queue = dispatch_queue_create( "com.xxx.xxxx", nil)
    dispatch_async(queue) {
    print("Swift 2.2的GCD 队列")
    }

      let queue = DispatchQueue(label: "com.xxx.xxxx")
      queue.async {
             print(“Swift 3 中的GCD队列")
       }
    

9.枚举成员首字母小写
.Add 到.add
.CGColor 到.cgColor
.TouchUpInside 到.touchUpInside
.FillStroke 到.fillStroke 等等
10.允许(大部分)关键字作为成员引用
enum UITableViewCellStyle : Int {
case `default`
case value1
case value2
case subtitle
}
let cell = UITableViewCell(style: .default, reuseIdentifier: nil) swift 2.2
let cell = UITableViewCell(style: .default, reuseIdentifier: nil) swift 3
11.Swift调用OC API更Swift ①规则
let searchText= userInput.stringByTrimmingCharactersInSet( NSCharacterSet.whitespaceAndNewlineCharacterSet()) swift 2.2
let searchText= userInput.trimming (.whitespaceAndNewlines)
大致规则:
尽量简短的、更Swift式的枚举、方法名,在3个单词以内为佳。
去除类型名称中的重复单词(噪音)
增加默认参数
增加第一个参数标签
在布尔属性前加前缀is
非类型(值)声明一律小写
让类遵循Comparable协议
12.Swift方法的动词和名词
名词-返回一个特定的值
动词-执行一个特定的操作

           var *array = [1, 5, 3, 2, 4]
           let *sortedArray = array.sort()//动词 重新排序会改变 array
           print(sortedArray)

           var *array = [1, 5, 3, 2, 4]
           let *sortedArray = array.sorted()//名词 重新排序不会改变array
           print(sortedArray)

13.xcode改进
storyboard 无极缩放
size class不再抽象话, 而是具体的设备
签名改进

你可能感兴趣的:(Swift 3.0 + xcode 8新特性)