根據(jù)蘋果的公開信息,Swift2.2將于今年春季發(fā)布我注,3.0將于今年年末發(fā)布停士。在蘋果開源了swift的同時(shí),也把開發(fā)計(jì)劃開源了出來:swift-evolution瞒窒。
根據(jù)文檔描述捺僻,2.2主要是bug修復(fù),性能提升崇裁,在不影響原先代碼使用的一些小改進(jìn)匕坯。預(yù)計(jì)年底發(fā)布的3.0將會是一個大的改動(包括一些常見api的重命名),也將在2.2中提前給出一些提示拔稳,好讓開發(fā)者盡早開始遷移代碼葛峻。
現(xiàn)在我整理一下文檔中一些明確的2.2中將會有的變化。
允許更多的關(guān)鍵字用做參數(shù)名
好的參數(shù)名對于提高代碼可讀性很重要巴比。在swift中很多關(guān)鍵字比如<code>in,repeat,defer</code>都不能用做參數(shù)名术奖。
2.2中礁遵,除了少數(shù)修飾參數(shù)的關(guān)鍵字外都將允許用作參數(shù)名。
為Tuples增加對比操作符
當(dāng)前采记,Tuples的數(shù)據(jù)不能使用==操作符:
2.2中將支持Tuples
關(guān)聯(lián)已存在類型時(shí)佣耐,不再使用typealias
typealias現(xiàn)在有兩個用處:
- 為一個已經(jīng)存在的類型取個別名
- 在協(xié)議中作為一個類型的占位名稱
代碼如下:
這是兩種完全不同的用法,不應(yīng)該用一樣的關(guān)鍵字唧龄。
2.2中將第一種情況時(shí)兼砖,啟用新的關(guān)鍵字<code>associatedtype</code>
函數(shù)簽名將包括參數(shù)名
一個函數(shù)有相同的函數(shù)名,參數(shù)名不同有多個重載很常見既棺。當(dāng)有多個重載時(shí)讽挟,在調(diào)用時(shí)能夠通過參數(shù)名來區(qū)別。但是在獲取類型時(shí)丸冕,卻不包括參數(shù)名耽梅。
舉例UIView中有這么幾個方法:
使用時(shí)可以通過參數(shù)名區(qū)分:
但是這樣使用時(shí)卻會報(bào)錯:
<pre><code>let fn = someView.insertSubview // ambiguous: could be any of the three methods</code></pre>
2.2中將會解決這個問題
一個新的方法生成selector
現(xiàn)在為了生成OC下使用的selector只能使用字符串生成,沒有類型檢查晨仑,很容易造成失誤褐墅。
將提供一個#selector()方法生成selector,如下:
<pre><code>let sel = #selector(UIView.insertSubview(_:at:)) // produces the Selector "insertSubview:atIndex:"
</code></pre>
增加#if swift 語法判斷當(dāng)前swift版本
使用如下:
歡迎關(guān)注我的微博:@沒故事的卓同學(xué)