Swift 3.0 + xcode 8新特性

  1. ++ , -- 操作符更改成 += 1,-= 1;
    for 循環(huán) :
    for(int i = 0 ; i < 100 ; i++){} 改成 for in:
    for i in 1...100 {} 或者改成 for-each 循環(huán)(閉包)
    (1...100).forEach { print( $0) }
    2.Currying 移除柯里化函數(shù):
    func foo(x:Int)(y: Int)
    3.移除變量參數(shù):
    func 中不再允許聲明var 參數(shù):
    func 用參數(shù)變量(var i: Int)//不會改變調(diào)用者的變量, 只在函數(shù)中有效
    如果一定要觀察調(diào)用者變量的變化情況
    func 用inout變量(inout i:Int)//會改變調(diào)用者的變量,可以觀察
    4.函數(shù)調(diào)用第一個參數(shù)必須加標(biāo)簽
    之前,函數(shù)調(diào)用可以不加第一個參數(shù)標(biāo)簽
    func foo(x:Int,y:Int)
    foo(1,y:2)
    Swift 3, 函數(shù)調(diào)用必須要加第一個參數(shù)的標(biāo)簽
    func foo(x:Int, y:Int)
    foo(x:1,y:2)
    如果swift的代碼是 3.0之前寫的, 不想每個調(diào)用方法去添加缺少的參數(shù), 可以吧方法的參數(shù)改成省略: fun foo(_ x:Int, y:Int) 調(diào)用方法可以使用 foo(1,y:2)
    5.Selector, KeyPath 不再以String的形式出現(xiàn)
    給一個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式的面向?qū)ο笥梅?br> 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.允許(大部分)關(guān)鍵字作為成員引用
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調(diào)用OC API更Swift ①規(guī)則
let searchText= userInput.stringByTrimmingCharactersInSet( NSCharacterSet.whitespaceAndNewlineCharacterSet()) swift 2.2
let searchText= userInput.trimming (.whitespaceAndNewlines)
大致規(guī)則:
盡量簡短的、更Swift式的枚舉、方法名,在3個單詞以內(nèi)為佳。
去除類型名稱中的重復(fù)單詞(噪音)
增加默認(rèn)參數(shù)
增加第一個參數(shù)標(biāo)簽
在布爾屬性前加前綴is
非類型(值)聲明一律小寫
讓類遵循Comparable協(xié)議
12.Swift方法的動詞和名詞
名詞-返回一個特定的值
動詞-執(zhí)行一個特定的操作

           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不再抽象話, 而是具體的設(shè)備
簽名改進

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容