歡迎加入QQ討論群258996829
我心依舊 頭像
蘋果1袋
1
我心依舊

聊聊 Swift 3.0 - 新版本對我們的影響

發(fā)布時間:2016-05-02 23:17  回復:0  查看:2680   最后回復:2016-05-02 23:17  

Swift 近兩年的發(fā)展勢頭非常的迅猛,而在它開源后,更是如井噴一樣的勢頭,除了 iOS 平臺,還支持了 Linux。 而今年下半年, Swift 3.0 也會隨之發(fā)布。這次我就和大家聊一下 Swift 3.0 會有什么新東西吧。

Swift 專門為版本更新相關的文檔創(chuàng)建了一個 Guihub 主頁,地址是 https://github.com/apple/swift-evolution

這里面列出了 Swift 3.0 版本著重處理的地方,我來幫大家總結一下:

  • 更穩(wěn)定的 ABI

所謂 ABI 就是二進制接口, 是更加底層的機制。 我們都熟知 API,是應用程序接口,比如 fun open(path: String) , 這時一個函數(shù)簽名,只要我們的程序在編譯的時候能找到這個方法簽名的實現(xiàn)就可以編譯通過。這樣,我們想改變這個方法的具體實現(xiàn)的時候,并不需要修改我們調(diào)用層的代碼,只需要將這個方法的實現(xiàn)替換成另外一個庫就可以了。

而 ABI 就更加底層了,它是基于語言和系統(tǒng)層面的。如果 Swift 3 對 ABI 的優(yōu)化做的足夠好的話,我們就可以之間在之后的版本中引用老版本 Swift 語言編譯的庫了。就不用怕 Swift 語言升級之后,很多第三方庫都需要修改的問題了。

相信有從 Swift 1.x 遷移到 Swift 2 體驗的同學們對這個感觸會更深~ 當然,這是 Swift 3 的一個目標,能不能實現(xiàn)就要看社區(qū)的力量了。

  • 解決易碎接口問題

所謂易碎接口嘛,是現(xiàn)代程序語言的一個通用問題,它的全稱叫做 Fragile Binary Interface。 簡單來說呢,就是 Swift 以及當前的大多數(shù)主流開發(fā)語言中的類的屬性,在底層都是通過偏移來訪問的,比如book.name, 我們在程序中訪問一個對象的屬性非常直觀。 但他在編譯后,實際上是這樣的形式location(book) + offset(name)。訪問 name 屬性是通過 book 對象所在的內(nèi)存地址加上一個偏移來實現(xiàn)的。

那么 Swift 中的類在編譯后,會將它所有的屬性的偏移值也都計算出來。這樣會加快程序在運行時的執(zhí)行速度,因為不需要在運行時再計算這些偏移量了。如果所有的類之間沒有任何關聯(lián)就不會有什么問題,但在實際中,我們使用類都會有繼承關系。假如我們的主項目中引用了一個外部的庫,我們主程序中繼承了這個外部庫中的類。那么如果這個庫中有任何改動,我們都必須重新編譯所有的類繼承樹上面的代碼,否則在我們主程序的子類中,就會發(fā)生偏移計算錯誤。

簡單來說呢,如果 Swift 3.0 能把 Fragile Binary Interface 處理好的話,對我們開發(fā)者最直觀的感受就是: 編譯速度加快

關于 Fragile Binary Interface 更詳細的內(nèi)容,大家如果有興趣的話可以參考這里:https://en.wikipedia.org/wiki/Fragile_binary_interface_problem

  • 可移植性

這個很簡單,就是讓 Swift 能移植到更多的其他平臺,并且讓 Swift 寫出的代碼,可以正確的運行在所有這些平臺上。

  • 全面支持泛型

目前的 Swift 版本已經(jīng)很好的支持了泛型的大部分特性了,這點大家在看 Swift 2.2 的 API 文檔中其實已經(jīng)能夠發(fā)現(xiàn)了。但目前還并沒有將泛型的特性完全實現(xiàn),所以這次 Swift 3.0 打算全面支持泛型的所有特性。

  • 發(fā)布 API 設計規(guī)范

這次還發(fā)布了 Swift 語言的 API 設計規(guī)范。 這個規(guī)范的目的是讓大家設計出更加統(tǒng)一的 API,里面給出了很多代碼規(guī)范,這個非常值得一看,即便我們不去構建開源庫,對我們的日常代碼風格也是很有幫助的。并且 Swift 3.0 會對大多數(shù) API 根據(jù)這個規(guī)范進行重新設計。理解了這個設計規(guī)范,對我們理解 Swift 語言也是很有幫助的~

設計規(guī)范地址:https://swift.org/documentation/api-design-guidelines

總結

Swift 是一個快速發(fā)展的語言,開源社區(qū)源源不斷的給它注入力量。從這次 3.0 的發(fā)布內(nèi)容來看,它正在嘗試解決編程語言最前沿的問題,比如 Fragile Binary Interface, 大家有興趣可以關于它的相關資料,這里就不再贅述。

來源:http://swiftcafe.io/2016/05/01/swift3/

您還未登錄,請先登錄

熱門帖子

最新帖子

?