歡迎加入QQ討論群258996829
來自星星的你 頭像
蘋果3袋
3
來自星星的你

蘋果繼續(xù)改改改!Swift語言何時能穩(wěn)定?

發(fā)布時間:2015-03-06 20:56  回復(fù):0  查看:3289   最后回復(fù):2015-03-06 20:56  

春節(jié)期間,蘋果發(fā)布了版本號為6D532l的Xcode 6.3 Beta 2,相較上一版本,此次共有16處改動,而幾經(jīng)修改的Swift語言即使已更新至1.2版本,其語法依然不穩(wěn)定。除此之外,Xcode還有一個非常大的變化就是全新的Playground。

App Store和Test Flight Crash Logs Oganizer

  • Xcode現(xiàn)在可以顯示從AppStore和TestFlight收集來的崩潰日志,為了查看你自己App的崩潰日志,先需要你在Xcode的賬戶面板輸入你的開發(fā)者賬號,最后在Xcode Organizer窗口中查看與你開發(fā)者賬號相關(guān)聯(lián)的iOS App崩潰報告。
  • 崩潰報告只在你向iTunes Connect中上傳了當前App的符號信息數(shù)據(jù)的情況下可見。Xcode提供一個列表來顯示你所有App中級別最高的崩潰報告,并且崩潰報是符號化的且和Apple的服務(wù)器整合。Xcode同時提供了工作流來管理你的崩潰報告以及直接回溯到你的App源代碼。

Xcode Playground增強

  • Playgrounds提供了一個簡單的方法通過標記文本來創(chuàng)建和編輯富文檔。使用新的"//:"和“/*:*/”風格的備注來顯示豐富的備注信息??梢酝ㄟ^使用編輯菜單中的“Show Documentation as Rich Text”和“Show Documentation as Raw Text”選項來切換Playground的顯示模式。

  • Playgrounds的結(jié)果現(xiàn)在以內(nèi)聯(lián)的方式顯示而不是顯示在Timeline視圖中,如果顯示結(jié)果有多行時,你可以在單行與多行列表中切換。對于結(jié)果集是數(shù)字的,Xcode提供了一個圖形化的顯示選項,結(jié)果顯示可以被調(diào)整顯示多還是少。
  • Playground滾動和性能都有所提高。

Swift性能

  • 一個被稱為“全模塊優(yōu)化”的編譯模式增加到了Swift中。這個選項可以把一個Target中的所有文件優(yōu)化到一起同時提供更好性能。這個新的標志可以通過Xcode中的“Whole Module Optimization”編譯選項開啟,或者在使用swiftc命令時傳入“-whole-module-optimization”參數(shù)開啟。

Swift語言的增強

  • 這個“if-let”語法現(xiàn)在擴展支持以一個bool表達式開頭并且跟隨一個可選綁定“l(fā)et”表達式。如:


if someValue > 42 && someOtherThing < 19,  
 let a = getOptionalThing() where a > someValue {  
 }  
  • 這個@autoclosure屬性擁有了第二種形式。@autoclosure(escaping) 和@autoclosure有著同樣的調(diào)用形式,但是它允許產(chǎn)生結(jié)果的閉包在實現(xiàn)中緩存,如:
func lazyAssertion(@autoclosure(escaping) condition: () -> Bool,  
 message: String = "") {  
lazyAssertions.append(condition) // escapes  
}  
lazyAssertion(1 == 2, message: "fail eventually")   

Swift語言的改變

  • 空合運算符(??)的優(yōu)先級現(xiàn)在比邏輯運算符和比較運算符高,但是比轉(zhuǎn)換運算符as和區(qū)間運算符低。這個提供了非常有用的特性,如:
if allowEmpty || items?.count ?? 0 > 0 {   
  • “&/”和“&%”運算被移除,這種行為分別使用“/”和“%”代替,不過這種形式已經(jīng)冗余了。
  • 從一個ASCII碼構(gòu)造一個UInt8需要一個ascii關(guān)鍵字。使用一個非ASCII的Unicode字符集將產(chǎn)生一個中斷。
  • C類型的size_t現(xiàn)在以Int的形式導(dǎo)入到了Swift中,這減少了大量Int和UInt間的顯式類型轉(zhuǎn)換,同時和返回Int型的sizeof更好的對齊。
  • 沒有繼承自NSObject的類但是確實繼承了一個@objc標志的協(xié)議時,則需要給這些方法,屬性和構(gòu)造器用@objc標記從而來滿足協(xié)議需求。如:
@objc protocol SomethingDelegate {  
 func didSomething()  
 }  
 class MySomethingDelegate : SomethingDelegate {  
 @objc func didSomething() { … }  
 }  

作者簡介:

王芳杰 老碼團隊(@未來眼之老碼團隊)成員,目前就職于疊拓信息技術(shù)有限公司,擔任疊拓NGN中國人力資源培養(yǎng)經(jīng)理、疊拓NGN中國售前經(jīng)理,《老碼說編程之玩轉(zhuǎn)Swift江湖》一書作者。

您還未登錄,請先登錄

熱門帖子

最新帖子

?