我應該使用 Swift 還是 Objective-C 來學習 iOS 應用程序開發?
已發表: 2017-02-04決定在項目中使用 Objective-C 還是 Swift 並不總是那麼容易,因為每次開始一個新項目時都需要考慮很多因素。 討論這個話題,因為它是大多數 iOS 應用程序開發學習者問的最常見的問題。
選擇正確和最合適的語言取決於項目和團隊的背景和偏好,以及對一種編程語言的忠誠度。 我們不是在搖擺 Objective-C 或 Swift 的旗幟,而是考慮一個項目的所有方面,這些方面指向一種語言而不是另一種語言,比如項目範圍、規模、團隊組成和技術考慮。
2014 年,Apple 發布了全新的編程語言 Swift,讓整個社區都大吃一驚。 在過去的 2 年裡,Swift 核心團隊快速重複,發布了眾多版本的語言,令社區欣喜若狂。
對於現有的開發人員來說,Swift 具有有趣的含義,它也為想要學習 iOS 開發的新手引入了一些複雜性。 對於已經了解 Mac 或 iOS 開發並希望學習並幫助塑造一門新語言的所有開發人員來說,這是一個不錯的選擇。
但是,有許多開發人員只是想嘗試一下,不想獲得 iOS 開發人員的工作,也不介意在學習時處理額外的錯誤,因為他們可能也有興趣學習它。
為什麼要學習 Swift?
為了弄清楚編程的基礎,Swift 是一種更容易使用的語言,而 Objective-C 已經有 30 多年的歷史了,並且是在我們必須對我們如何與計算機交互進行不同考慮的時候編寫的。
所有這些因素對於今天了解和理解都非常重要,因為這些因素會使學習編程的基礎知識變得令人生畏。 此外,Swift 比 Objective-C 更容易理解編程的基礎知識。 讓我們來看看你應該學習 Swift 的不同原因?
安全的
在推出 Swift 時,Apple 聲稱它安全、現代且功能強大,而現代主義和編程語言的強大功能對絕對的初學者來說意義不大,而安全性才是最重要的。
最困難的事情是在學習如何編程時不知道出了什麼問題。 好吧,從自己身上弄清楚並從中學習有很多好處; 然而,缺乏適當的反饋可能會推遲一些。
使用 Swift,您可以防止出現一整類錯誤或錯誤,並反復告知我們做錯了什麼。 除此之外,Swift 更安全,它會讓你的代碼編寫體驗不那麼令人沮喪。
高度互動的環境
除了 Swift,Apple 還發布了兩個最具交互性的編碼環境,幫助初學者學習如何編碼。 Xcode Playgrounds 是一個幫助所有初學者學習如何編碼的環境。
Xcode Playgrounds 是 Mac 應用程序 Xcode 的環境和一部分,可讓您學習和探索 Swift、應用程序的原型部分以及為其他人開發學習環境。
您還可以找到一個名為 Swift Playgrounds 的 iPad 應用程序,它提供與 Xcode Playgrounds 相同的交互環境,但以更具調查性的方式,允許您使用 iPad 的硬件。
Swift 最棒的地方在於,它比其他任何東西都更具吸引力,它提供即時反饋,使整個概念易於學習。 這種環境對 Swift 來說並不酷,但是蘋果用 iPad 應用做了一些很棒的事情,讓所有初學者的學習變得容易。
現代的
Swift 是一種高度現代的語言,具有豐富的方面,讓初學者比 Objective-C 更容易讀寫。 在網絡上,你可以看到它是寫出來的,這並不重要,因為一旦你有足夠的經驗,一切都會變得更容易理解。
在不被閱讀代碼絆倒的情況下,很難弄清楚這些概念。 您不會因為在行尾忘記分號而導致程序崩潰。
一旦你習慣了,這些都是小事; 但是,它們肯定對 Swift 為初學者帶來的好處。 Swift 是一個高度現代化的工具,它將降低許多人的門檻,讓專注於概念變得非常簡單。
簡而言之,學習和理解編程基礎知識是您學習 iPhone 開發之旅的第一步。 語言提供的現代性和安全性都有助於降低進入門檻。
為什麼要學習 Objective-C?
漸漸地,答案會隨著歲月的流逝而改變,Swift 在社區中取得了更多進展; 然而,關於 Objective-C 只需要了解一件事,因為它已經成為 iOS 開發的事實上的語言大約 10 年了。 而且,如果你想成為一名 MacOS 開發者,從 80 年代開始,Objective-C 一直是首選。
簡而言之,iOS SDK 中的所有內容都是用 Objective-C 開發的,並且與 Objective-C 編程模型完美配合。 雖然你是用 Swift 編寫代碼,但你將與所有用 Objective-C 編寫的組件進行交互。 第三方庫和框架主要在 Objective-C 中,因為 Objective-C 的存在時間要長得多。
此外,絕大多數學習資源,如博客文章、書籍、會議視頻等,都在 Objective-C 中; 因此,如果您因某些神秘問題而上網尋求幫助,則很有可能閱讀 Objective-C 代碼。 Swift 社區很熱心,Swift 中有很多資源,所以不要覺得你會很難獲得幫助。

如果您決定成為一名認真的 iOS 開發人員,那麼閱讀和編寫 Objective-C 代碼也很重要。 這背後的主要原因是,如果你找到一份 iOS 開發人員的工作或收到一個較舊的項目,所有代碼都將使用 Objective-C 編寫。
然而,我們用於 iOS 開發的工具並沒有針對 Swift 進行優化,而且它已經實現了,但是這些工具在 Objective-C 中要好得多。 對於大多數公司來說,Objective-C 仍然是首選的開發語言。
有必要學習兩種語言嗎?
蘋果,一家領先的公司,發布一種全新的語言並不是為了好玩。 該公司已通過核心團隊發布了這種新語言,並努力促進社區採用並提供明確的指示。
該公司將這種高端語言視為其平台的未來。 Swift 語言的主要目標是超越 iOS 開發並與正在進行的服務器端 Swift 一起工作。
如果您決定長期加入這個社區,Swift 將成為您的主要開發語言。 不管 Swift 採用何種方式,Objective-C 仍然沒有任何進展。 該公司仍在嘗試對語言進行許多改進。
可以完全用 Swift 編寫應用程序; 但是,您很有可能需要偶爾使用 Objective-C。 作為初學者,請務必注意這一點,這是 iOS 開發中相當困難的部分。 一旦你熟悉了一種編程語言,學習另一種編程語言就不難了。
在 Objective-C 和 Swift 之間進行選擇時,請注意技術方面的考慮
Objective-C 和 Swift 這兩種語言都獲得了不同的技術優勢。 在下面,您可以找到應該考慮的因素。
語言運行時
你知道 Objective-C 運行時比 Swift 運行時更健壯嗎? Swift 的運行時甚至接近於 Objective-C 的運行時,甚至幾年都無法實現。 如果您決定編寫將受益於對象和類型的反射和深入自省的代碼,那麼 Objective-C 是不費吹灰之力的。
代碼穩定性
Swift 是比 Objective-C 更安全的編程語言,因為它具有強大的類型系統和錯誤處理能力。 如果您使用慣用的 Swift,則可以保證您的代碼能夠解決所有潛在的錯誤情況。
這並不意味著它抓住了一切。 保留循環中的內存逃逸是錯誤的一個示例,它在 Swift 代碼中與 Objective-C 一樣普遍。 這是因為 Swift 的非自願引用計數係統不為所動。
工具支持
整個 Xcode 團隊完成了一項令人難以置信的工作,升級了構建過程以支持 Swift。 該團隊不得不處理應用一種複雜的語言並支持它使用一種非常不同的語言。 IDE 本身滯後並且對 Swift 的工具支持最少,這有點令人驚訝。
有時,您可以幸運地獲得語法突出顯示。 很多時候,你會沒有自動完成。 如果您喜歡現代 IDE 提供的強大支持,那麼您一定要考慮堅持使用 Objective-C 或評估替代 IDE。 最常見的替代方案是 AppCode; 但是,有人對 emacs 進行了正確的設置。
使用 Foundation API
您計劃製作的應用程序將使用主要的基礎 API,您應該使用 Objective-C。 的確,Swift 提供了一些出色的包裝器,並使內存管理更加順暢; 但是,這些仍然是 C API 和基於 C 的函數調用,它們更自然地適合 Objective-C 代碼庫。
使用 C++ 代碼
與基礎 API 類似,您可以使用 C++ 庫或在跨平台 C++ SDK 之上進行開發,因為它適合於 Objective-C 項目。 您將無法將 C++ 導入 Swift 文件。
要使用 Swift,您需要完成製作 Objective C 和 C++ 包裝類的繁瑣且充滿錯誤的任務。 每一次,您都需要鏈接和額外的開銷,並且想要使用 C++ 庫的另一部分。 如果你打算使用 C++,Objective-C 是一個正確的選擇。
面向未來
你知道最具前瞻性的項目是用 Swift 編寫的嗎? Swift 的使用範圍已擴展到用於第三個開源 Cocoa 項目。 在接下來的四年裡,它將等同於 Objective-C。 此外,大多數新的教程和博客已經用 Swift 編寫。
我們堅信,在 5 到 10 年內,應該有足夠的關於 Swift 的信息來反駁理解 Objective-C 的要求。 在 Objective-C 消失之前,您將有足夠的時間來轉換您的代碼; 因此,您可以考慮一下。
結束語
因此,這些是開發人員在為 iOS 應用程序開發選擇 Objective-C 和 Swift 時需要考慮的最常見因素。 您的項目有可能包含其他考慮因素,而這些因素通常不會為大量應用程序所面臨。 但是,如果您正在尋找一位經驗豐富、精通 Objective-C 和 Swift 的 iOS 開發人員,您可以聯繫 iPhone 應用程序開發公司。