2013/07/05

Apple WWDC 2013中關於Objective-C的新東西

WWDC 2013落幕多時,影片可到此下載

我看了402 What’s New in the LLVM Compiler、404 Advances in Objective-C、408 Optimize Your Code Using LLVM後,將重點簡述於下。

Objective-C語言居然登上TIOBE第三名,真是太厲害了。

新功能Module,在原本的Framework再包裝一層,使用起來更方便,更接近近代語言中「匯入模組」的形式;@import某標頭檔後,Xcode也會自動連結相對應的Framework,不需要自己到Link Binary With Libraries手動加入。目前,只有系統Framework可成為Module。

C相關語言的前置處理器(preprocessor)相當古老,使用文本置換的機制,大大拉長編譯時間,也不利於模組化,只不過積習難改,通常會透過預先編譯標頭檔的機制加以緩解。Module算是往前邁進一步,不錯。

新關鍵字instancetype,類別的-init方法原本是回傳id,但id可轉型為任何型別,造成困擾,將回傳型別換成instancetype後,就能編譯器處理,換成正確的型別。


除此之外,編譯器的部份也有不少增進的地方,錯誤與警告訊息更好更多了,能夠抓出更多錯誤。

Apple已經明確表示揚棄Garbage Collection了,全面採用ARC,Xcode 5也改用ARC。編譯器裡處理ARC的部份也更聰明了,現在可以看懂Core Foundation的命名慣例,當我們自動橋接,我們不需要自己加入__bridge了。

編譯器開始支援Apple的A6處理器(iPhone 5與新iPad),架構名為armv7s。處理器裡面其實有特別為向量打造的硬體加速能力,譬如Intel AVX(Advanced Vector eXtensions),Xcode 5開始支援AVX2。LLVM 5.0可分析strict aliasing(關鍵字strict)、支援LTO(Link-Time Optimization),在連結期間對整支程式進行最佳化,而不是分別針對每一支原始碼檔案最佳化。將迴圈向量化。Xcode 5不再支援GCC與LLVM-GCC。對C++11的支援也越來越好。另外還有許多最佳化參數,需視情況開啟或關閉,注意,有些最佳化參數,譬如關於浮點運算,可能會產生不一樣的結果。

No comments:

Post a Comment