swift 2特性記錄

swift 團隊一直在優化,讓你們準備在秋天的時候,遷移到swift2作準備。ios

1、錯誤處理編程

異常處理,不是NSError對象和雙指針。swift

可使用 throws   來指定方法來拋出一個錯誤。數組

調用do  try catch 多個關鍵字來捕獲和處理錯誤。session

NSError對象的引用,inout app

方法會賦值給錯誤變量,傳入一個nil到這裏徹底忽略這個錯誤,或者傳入  NSError但從不檢查它。編程語言

enum  DrinkError:ErrorTypeide

{函數

case NoBeerRemainingError學習

}

func drinkWithError()throws

{

if beer.isAvailable()

{

// party!

}else{

throw DrinikError.NoBeerRemainingError

}

}

func tryToDrink()

{

do{

try drinkWithError()

}

catch{

print("could not drink beer!:[")

return

}

}

一、建立一個繼承ErrorType的enum

二、使用throws關鍵詞,標誌任何函數能夠拋出一個錯誤。

三、拋出一個錯誤,將會在section4中被捕獲。

四、在do塊中包含任何能夠拋出一個錯誤的代碼,而不是其餘語言相似的try快中,而後你添加一個try關鍵字到函數被調用的前面,這個函數可以拋出一個錯誤。

綁定

在swift 1.2 失去了金字塔的厄運和可以在一行代碼測試多個綁定的optionals;

if let pants = pants,frog = frog{

// good stuff here!

}

檢查一些沒有值的optionals   早點退出,這是swift 2提供的guard語句。

guard let pants = pants,frog = frog else{

// sorry,no frog pants here

return

}

使用guard意味着你能夠執行optional binding ,若是條件失敗就提供一個代碼塊在else運行,你能夠繼續執行,optiional frog 和 pants在做用域內被unwrap

使用guard指定某種你但願獲得狀態而不是檢查錯誤狀況以後,使代碼更加簡潔。

協議擴展

面向協議的編程語言

在swift1,協議就像接口同樣能夠指定一些屬性和方法,類,結構體,枚舉會遵循它。

在swift2,你能夠擴展協議給屬性和方法添加默認實現,你以前已經能夠在類和結構體添加新的方法到string 或 array

你能夠添加這些到協議,讓你更加普遍應用。

extension CustomStringConvertible{

var shoutDescription:String{

return "\(self.description.uppercaseString)!!!"

}

}

let greetings = ["Hello","Hi","Well"]

// prints Hello,Hi,Yo yo yo

print("\(greetings.description)")

// prints HELLO,HI,YO YO YO

print("\(greetings.shoutyDescription)")

協議被命名爲CustomStringConvertible 大多數的Foundation對象都遵循Printable協議,有了協議擴展,能夠用自定義功能來擴展系統。

相比向不少類,結構體和枚舉添加少許的自定義代碼,你能夠編寫一個通用實現,應用到不一樣的數據類型。

用過map    filter 的,能夠認爲以方法的方式比全局函數來使用它們更好。

已經有一些新的方法添加到集合類型。

map,filter,indexOf

et numbers = [1,5,6,10,16,42,45]

// swift 1

find(filter(map(numbers,{$0*2}),{$0%3 == 0}),90)

// swift 2

numbers.map{$0*2}.filter{$0%3 == 0}.indexOf(90) //return 2

 

  • Objective-C 泛型 – Apple已經開始標註全部的Objective-C代碼以便Swift類型可以獲取正確類型的optional。使用Objective-C泛型也能正常工做,這樣給Swift開發者更好的類型提示。若是你但願出現一些UITouch對象或字符串數組,那就會出現你想要的而不是一些AnyObjects。
  • 重命名 語法 – println已經離開咱們一年了;如今它是普通舊的print,如今它有第二個參數的默認值設置爲true來決定是否換行。do關鍵字主要用來錯誤處理,do-while循環如今是使用repeat-while。相似地,有不少協議名都改變了,例如:Printable改成CustomStringConvertible。
  • Migrator – 有不少小的語法改變,你怎樣使得你代碼變得最新?Swift 1-to-2 migrator會將代碼變成最新的標準和改變語法。這個migrator智能到可以更新你的代碼使用新的錯誤處理,和更新塊註釋到新的格式風格!
  • 開源! – 對碼農有一個重大消息就是在秋天發佈Swift 2的時候,Swift將會開源!這意味着不只可使用它來iOS開發,更重要的是學習它的源代碼。不只如此,這將是很好的機會來深刻源代碼,甚至爲項目貢獻代碼,而後在swift編譯器提交歷史上留下你的名字。
  • 文章引用自以下地址:O(∩_∩)O謝謝

http://ios.jobbole.com/82099/?from=groupmessage&isappinstalled=1

 

這只是全部發布特性中的一些簡單示例;想了解更多,請查看WWDC session videos和已更新的Swift Programming Language book

若是還有一些人記得在Swift第一個beta版和發佈的1.0之間有不少改變,那麼未來確定會有更多地特性出現。咱們團隊將會持續關注全部的更新,深刻挖掘使人興奮的改變,因此請密切留意教程,書籍和視頻。

相關文章
相關標籤/搜索