標籤:
swift 團隊一直在最佳化,讓大家準備在秋天的時候,遷移到swift2做準備。
一、錯誤處理
異常處理,不是NSError對象和雙指標。
可以使用 throws 來指定方法來拋出一個錯誤。
調用do try catch 多個關鍵字來捕獲和處理錯誤。
NSError對象的引用,inout
方法會賦值給錯誤變數,傳入一個nil到這裡完全忽略這個錯誤,或者傳入 NSError但從不檢查它。
enum DrinkError:ErrorType
{
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
}
}
1、建立一個繼承ErrorType的enum
2、使用throws關鍵詞,標誌任何函數可以拋出一個錯誤。
3、拋出一個錯誤,將會在section4中被捕獲。
4、在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之間有很多改變,那麼將來肯定會有更多地特性出現。我們團隊將會持續關注所有的更新,深入挖掘令人興奮的改變,所以請密切留意教程,書籍和視頻。
swift 2特性記錄