Swift 5 將使用UTF-8 作為首選字符串編碼
Swift官方博客公佈了Swift 5將首選字符串編碼從UTF-16切換到UTF-8的消息,同時保留與Objective-C有效的互操作性。因為String類型會對這些底層問題進行抽象,所以開發者不需要對源代碼進行更改。切換到UTF-8實現了String的長期目標之一——實現高性能處理,這也是關注性能的開發者呼聲最大的請求。
更重要的是,該功能還為將來提供更高性能的API 奠定了基礎。字符串的首選編碼將會成為影響Swift ABI 性能的一部分,因此這次在Swift 5 版本中為了 ABI 的穩定性而實現該功能是勢在必行的。
背景
儘管String類型在技術上是同一個結構,但它可以以多種形式存在。我們不妨將String視為手工枚舉,使用傳統的 bit-twiddling 技術手工製作,以生成緊湊而高效的代碼。
由上圖可以看到,Swift 5 之前,字符串內容以 UTF-16 和ASCII 兩種形式存儲。出於與現代計算環境的高效兼容性、簡化相關操作以及對性能提升的考慮,Swift 決定在Swift 5 中使用UTF-8 作為首選字符串編碼。
對現有的影響
按照官方說法,在代碼層面,這個變動對大多數開發者的影響不大,並且依然會提供與Objective-C API 的高效互操作性。