99热99这里只有精品6国产,亚洲中文字幕在线天天更新,在线观看亚洲精品国产福利片 ,久久久久综合网

歡迎加入QQ討論群258996829
Denise 頭像
蘋果2袋
2
Denise

Swift標(biāo)準(zhǔn)庫的發(fā)展

發(fā)布時間:2016-03-11 14:11  回復(fù):0  查看:4154   最后回復(fù):2016-03-11 14:11  

作者 Sergio De Simone ,譯者 王慶 

根據(jù)Apple正在編寫的一份文檔所述,Swift的一個主要設(shè)計目標(biāo)是確保代碼高效執(zhí)行的同時還能對實現(xiàn)進(jìn)行加載期抽象。Apple的設(shè)計文檔提供了與庫設(shè)計者相關(guān)的信息,包括Swift標(biāo)準(zhǔn)庫。

Swift標(biāo)準(zhǔn)庫設(shè)計者面臨的一個主要亟待解決的問題是保證未來客戶端與現(xiàn)有庫之間的兼容性(向前兼容),現(xiàn)有客戶端與未來版本的庫之間的兼容性(向后兼容)。

要解決這個問題只需要確保公有的方法接口不變,保證當(dāng)?shù)讓訉崿F(xiàn)代碼修改時暴漏給使用者的接口仍然有效即可。

關(guān)于蘋果正在推進(jìn)標(biāo)準(zhǔn)庫發(fā)展的討論意在影響Swift的設(shè)計和功能,使得庫設(shè)計者們能在滿足向兼容與向后兼容的同時不要因為加載時的檢查而付出太多的成本。

Apple的文檔定義了一套解決方案來幫助庫設(shè)計者們實現(xiàn)這一目標(biāo):

  • 使用版本控制的API,確保用戶想使用某一個特定版本的API時可以限制僅當(dāng)該版本API可用時調(diào)用。
  • 僅允許不會破壞兼容性規(guī)則的改動。為此蘋果在每發(fā)布一個新版本的庫時都會通過文檔標(biāo)明所有確定無誤的改動點。這樣的改動點包括修改一個方法的實現(xiàn),修改一個內(nèi)部參數(shù)名,或者是給參數(shù)加上了默認(rèn)值。另外一些改動則是不允許的,例如改變一個方法的通用要求,或者是改變參數(shù)的順序,Apple的庫不僅僅對方法做了標(biāo)識,也包括結(jié)構(gòu)體、枚舉、協(xié)議、類、擴展等等內(nèi)容的描述。

此外,Apple還說追求加載時抽象從優(yōu)化的角度看是有一定的性能損耗的。的確,許多的優(yōu)化都依賴于這個功能的真正實現(xiàn),即它有沒有訪問全局內(nèi)存、一個struct里的成員的個數(shù)等,因此我們在開發(fā)過程中做向前兼容或者向后兼容時一定要盡力避免這樣的優(yōu)化。

還有一些其他關(guān)注點:使用了內(nèi)聯(lián)代碼,但它應(yīng)該被當(dāng)做當(dāng)前模塊外的代碼,因為它最終會在客戶的模塊里執(zhí)行;本地可用性環(huán)境,會影響“#available”對函數(shù)體的作用方式;對類型的約束,比如說聲明一個類型是“trivial”,或者定義它的最大“size_in_bits”等等。

如前面所提到的,文檔是Apple工作過程中的產(chǎn)物和一些基本改動點的總結(jié),但如果你是一名Swift開發(fā)者還是應(yīng)該多關(guān)注文檔。

查看英文原文:The Evolution of Swift's Standard Library

感謝張龍對本文的審校。

您還未登錄,請先登錄

熱門帖子

最新帖子

?