Swift 4.2正式釋出
在Swift 4釋出了一年之後,Swift 4.2版本也ofollow,noindex" target="_blank">正式推出 。這一版本帶來了語言和標準庫方面的改進,包括更好的泛型、Hashable協議以及隨機數生成。另外,Swift語言維護者Ted Kremenek寫道,Swift 4能提供更快的編譯速度,並提升了除錯體驗。
在語言層面,Swift 4.2完成了從Swift 4.1就 開始的泛型條件一致性開發工作,它實現了一個規範,即某種型別必須滿足某些條件才符合某種協議。例如:
extension Array: Equatable where Element: Equatable { static func ==(lhs: Array<Element>, rhs: Array<Element>) -> Bool { ... } }
Swift 4.2添加了在執行時查詢型別來獲得條件一致性的可能性,而這在Swift 4.1中會發生崩潰,例如:
if let array = items as? Equatable { //– safely use == here }
Swift 4.2另外一個有用的功能是Enum case 的衍生集合 ,可以通過.allCases屬性迭代所有符合CaseIterable協議的case。
其他的改進包括提供一組新的API用於隨機數生成和重排 、更好 的雜湊 ,以及型別安全的動態成員查 找 。
從除錯前端來看,Swift編譯器現在支援使用#warning和#error指令在程式碼中標記問題。例如:
#warning("Unsafe operation") #error("Prodive your credentials here")
Kremenek還特別指出編譯器效能獲得了提升,這要歸功於批處理模式編譯和改進的執行時效能(因為對retain/release週期的呼叫發生了變化)。
一年之後,Swift 4.2版本的KVO錯誤還是沒有解決 。除非你想體驗隨機崩潰的感覺,否則不要在iOS程式中使用Swift KVO語法。
具體來說,當主執行緒嘗試註冊觀察者(例如更新UI元素)的同時,在後臺執行緒執行KVOkeyPathsForValuesAffectingValue 方法可能就會觸發這個bug。
對於所有受到影響的開發人員,可以使用PMKVObserver ,它是安全強型別的Swift 4 KVO語法替代品。
Swift 4.2與Swift 4和3程式碼相容,並被包括在Xcode 10中。通過Swift Migrator工具 可以輕鬆實現從早先版本的遷移。
蘋果公司在 WWDC 2018 上 發表 了 一個 40分鐘 的演講中 ,介紹了Swift 4的新特性概覽,要了解更多詳情,請參考官方公告。Ole Begemann’s Swift 4.2 playground 是學習Swift 4.2新功能的一個很好的資源。
檢視英文原文:Swift 4.2 Hits the Road
感謝無明對本文的審校。