如果你覺得蘋果的Swift語言沒有趕上趟,那就要重新審視這一觀點了!Xcode 7.1 Beta 2版本已經支持Swift 2.1了。我沒有必要在此事無巨細一一列舉,你隨時可以自行查看其發布說明的。
從C語言中引入的枚舉類型自動遵循Equatable協議。所以用于樣式匹配的開關語句(switch)目前不再強制去寫擴展(extension)聲明和操作符(operator)。
C語言中的非匿名聯合體(union)被作為結構體(struct)引入。結構體中的每一個字段與聯合體中的字段相對應。Swift中的結構體大概是用來維持一種能力的,即使用聯合體給底層同一數據位(bit)投影不同的字節或字。但我還沒驗證過Swift結構體的域(field)是否會用同一個位進行存儲。
C語言結構體中,相對鮮為人知的位域(bitfield)也被引入了Swift,能夠使用了。
dispatch_block_t變回了@convention(block) () -> Void的樣子,因此 dispatch_block_create又能正常工作了。
字符串可以按照字符串為單位進行插入操作。這是一直困擾我的地方。如今可以這樣做了:"fancy \(thing ?? “”)"。
如果只是文件中的私有內容被修改,則不會誘發與之依賴的其他文件重新編譯。有些時候,這樣做性能會得到大幅地提升。
類型檢查產生了“繼續改進”模樣的錯誤消息。我不會太多關注這一點,除非明顯遇到了很常見的場景,那就是一個普通的閉包本身帶有錯誤。這基本上是說你出錯了,要么是超出了范圍,要么是聲明了沒有用的內容;我已經習慣了剪切和粘貼,從而避免了這樣的問題。我也會手動給閉包傳遞參數和返回類型。這部分是不錯的!
函數和閉包目前都具有 協變性(covariance)和逆變性(contravariance)。
這一奇特的性質表示可以通過Any -> Int這樣的轉換,得到String -> Any這樣的結果。
換句話說,當返回類型的派生程度較目標類型大時,閉包的參數派生程度就較目標類型的小。想一想這是合理的……如果函數可以接受(Any, Any)類型的參數,那么它一定能夠接受(String, Int)和(AnyObject, NSURLRe-quest)類型的參數。如果目標類型是AnyObject,那么UIButton肯定也沒問題。
當Objective-C中的塊(block)傳遞給Swift中的方法時,會引起內存泄漏或崩潰,這個問題被修復了。
在switch語句中使用as Type處理多種類型的轉換不再引起內存泄漏。
使用var或let一次聲明多個全局變量不會再引起內存出錯。
while let和while case語句不再使變量作用于其下的語句塊。這樣一來,可能會導致編譯器崩潰,因此我擔心對每個人來說這都是一種破壞。
不帶優化設置編譯的情況下同時開啟調試信息,這樣做會導致編譯器崩潰。解決方法是在非調試模式構建過程中,使用-gnone禁掉調試信息。
緊張的日程外加生病,處理事情忙得不可開交。但我期待著恢復定期寫博客的狀態。熬了一段時間后,有幾篇文章馬上要完成了。一些是關于Swift的文章,另外一些是更泛泛的內容。
本站文章版權歸原作者及原出處所有 。內容為作者個人觀點, 并不代表本站贊同其觀點和對其真實性負責,本站只提供參考并不構成任何投資及應用建議。本站是一個個人學習交流的平臺,網站上部分文章為轉載,并不用于任何商業目的,我們已經盡可能的對作者和來源進行了通告,但是能力有限或疏忽,造成漏登,請及時聯系我們,我們將根據著作權人的要求,立即更正或者刪除有關內容。本站擁有對此聲明的最終解釋權。