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
http://ios.jobbole.com/82099/?from=groupmessage&isappinstalled=1
這只是全部發布特性中的一些簡單示例;想了解更多,請查看WWDC session videos和已更新的Swift Programming Language book
若是還有一些人記得在Swift第一個beta版和發佈的1.0之間有不少改變,那麼未來確定會有更多地特性出現。咱們團隊將會持續關注全部的更新,深刻挖掘使人興奮的改變,因此請密切留意教程,書籍和視頻。