Swift與Objective C的復雜比照。本站提示廣大學習愛好者:(Swift與Objective C的復雜比照)文章只能為提供參考,不一定能成為您想要的結果。以下是Swift與Objective C的復雜比照正文
如今Swift和Objective C的競爭正在飛快加劇。 這是很容易了解的,由於他們都有各自的益處,一些開發人員對對如何選擇一個合適項目的編程言語發生了困惑。
首先,這兩者之間的選擇是沒有嚴厲的答案。在做出選擇之前,要思索很多事情,包括各種要素和特征、各自缺陷和優點。 因而,這裡做一個概述,以客觀展現單方之間的差別和利害,由於我們以為明智的做法是選擇依據能否合適自己的開發團隊和詳細項目停止選擇。
管理思索
第一個思索是依據特定團隊選擇。即便Swift通常被稱為更復雜,更平滑的語法言語,它消弭了更復雜的Objective-C的一些費事,但依然有一些進入門檻。這裡正確的問題不是“假如團隊可以運用Swift / Objective-C構建新項目會怎樣”,而是“如今的團隊能否能運用它在截止日期之前完成義務?
與你的團隊閉會訊問他們,必需確保他們不只可以運用Swift完成,而且確保及時完成。假如團隊是Objective-C專家,強迫他們運用Swift並在一個有嚴厲期限的項目上運用並不是一個好主見。反之亦然。 嚴厲的截止日期決議了團隊運用最溫馨的言語(假如沒有被環境掩蓋)。
項目規模
下一個思索能夠是的項目的規模。 小型項目可以從Swift的復雜語法,文件構造等功用中受害,而大型項目則能夠會遭到Swift這是一門年老言語的影響。當然會有Xcode轉換到新版本的手腕,但他們不是完滿的,隨著項目增長事情變得更糟。Swift由於年老也帶來了一些缺陷,比方錯誤和不波動性,以Swift的原生IDE - Xcode為例,常常報告解體景象發作,Xcode言語的許多不兼容等問題也有報道,雖然Xcode中提升效率相當快,許多錯誤曾經處理。 但是有些新錯誤還會來。
技術緣由
這兩種言語之間有多種區別,但它們至多有一個重要的特征 -它們都是蘋果公司的次要編程言語,適用於一切蘋果平台的使用順序開發。 Objective-C早在八十年代晚期就曾經開收回來,它屬於Generation X.原始的Cocoa是寫在其中的,雖然Swift的書面局部自2014年推出以來不斷被添加到Cocoa和Cocoa Touch。
Objective-C是C的嚴厲超集,從Xerox Smalltalk失掉其面向對象的語法。 它的性質是高度靜態的,具有靜態綁定和靜態類型,而Swift有靜態類型反省。
如今讓我們看看這兩種言語的優勢,一方優勢可以被以為是另逐個方弊端。
為什麼選擇Swift
運用方便
Swift的設計更容易運用,比Objective-C更容易閱讀了解。它的語法更接近自然的英語,保持了一些傳統的商定 - 沒有更多的括號鏈,在任何對象相關的關鍵字或Objective-C特定類型之前沒有更多的“@”。 看起來更明晰; Swift有時被稱為“沒有C的Objective-C”。Swift不是基於C的,不只簡化了語法,而且降低了Java,Python,C ++等順序員用於掌握Swift的門檻。
Swift也不那麼冗長,特別是在字符串處置中,甚至支持運用復雜的“+”添加字符串。
內存管理在整個代碼中是一致的,不同於以前的面向對象,自動援用計數(ARC)如今可以在代碼的面向對象和進程兩局部中同時適用。 Objective-C會有少量的內存走漏,Swift使這點變得不能夠了,並束縛了順序員的開發時間。
此外,Swift不運用雙文件零碎,沒有更多的.h頭文件+ .m完成文件,只要一個.swift代碼文件(感激LLVM編譯器和Xcode IDE依賴處置)。
平安
Swift被設計成一種平安的言語。在這個世界上沒有不發作毛病的平安言語,但是錯誤處置是十分好的思索,類型零碎是十分弱小的。
不像Objective-C不會在nil指針調用上拋出異常,比方說,假如你試圖調用一個未初始化的指針變量的辦法,它只是使這個表達式為無操作,在Swift的可選類型和值類型使得在nil指針調用上生成編譯器錯誤。這意味著無操作相關的不可預測的不波動行為消逝了,它大大延長了錯誤修復費用。
靜態庫
在iOS 8中,一個等待已久的新技術被帶到了挪動平台 - 支持靜態庫。 從那時起,Swift使用順序可以與Swift的較新版本鏈接,允許Swift在演化上比iOS更快,這是古代言語必需的。 靜態庫也是內部的使用順序可執行文件,允許較小的初始下載和差別化的挪動和嵌入式使用順序的負載。
將來
Swift能夠只要兩年時間,但自2014年以來,它的盛行度曾經迅速增長到一切開源Cocoa項目的30%左右。隨著蘋果明白瞄准Swift取代Objective-C作為他們的次要言語,將來將轉向Swift。
但這不是一個今天就能到達的問題,這種過渡將需求一些時間,但它估計在5 - 10年左右,因而有開發人員順應的時間。
頗為喜愛的效率蘋果軟件缺陷報告工具顯示蘋果有多努力地為Swift推行。蘋果還將順應社區的想法,吸收其知識和經歷,並在將來版本中施行其處理方案。 完滿的方式。
為什麼選擇Objective-C
兼容性和支持
雖然Xcode團隊的努力,但是IDE不是很好支持Swift,由於能夠它太新了。自動完成滯後了,語法突出簡直是非根底功用的,重構工具會不任務。 運用Objective-C編程曾經有一段時間了(> 30年了!),它十分成熟,有十分輝煌的工具支持。
由於Swift是“無C言語”,C ++庫在這裡不可用。 異樣的包括C ++跨平台SDK和API的根底(如的CoreFoundation )。
有一些工具如橋接和包裝類,但這些努力通常不值得,堅持Objective-C最好的狀況下是運用C ++和Foundation API。
Swift不只年老,而且與舊的操作零碎不兼容,它的支持從iOS 7.0+和Mac OS 10.9+開端(tvOS和watchOS支持任何版本的Swift),因而Objective-C是老平台的首選工具平台。
專業
不只一些團隊在Objective-C上有更多的經歷,但是假如你有興味外包你的項目的一些局部,更容易找到第三方專家。
靜態
雖然Swift可以從靜態類型反省中獲益於優化,但是即時添加的辦法不再可用,一切類型都在運轉時之前定義。 假如你相對需求靜態類型,那麼Swift是不行的。
運轉
Objective-C是一個愈加確定的平台,因而它有一個更波動,更強硬和牢靠的運轉時。 我們不想說Swift不能完成這個規模,但它需求時間。
結論
正如我們所看到的,兩種言語都有自己的優勢和權衡,但他們的確有能夠一同任務(在較小的項目中,但最好是)。