1. 程式人生 > >Swift 語言開發 iOS 應用程式的利弊

Swift 語言開發 iOS 應用程式的利弊

目前全球共有超過 7 億臺 iPhone 處於活躍狀態,這造就了 iOS 作為全球第二大移動裝置平臺的狀態。雖然安卓系統的全球市場佔有率超過 iOS 系統,但在諸如美國、法國和英國的區域性市場中 iOS 系統仍然佔據主導地位。因此許多公司專注於 iOS 平臺進行軟體開發,因為他們將 iOS 平臺視作關鍵投資機會。

如果你的公司也正計劃跟隨 iOS 軟體開發,那麼你需要作出一個至關重要的決定。你需要為你的產品選擇合適的技術組合。你的目標是什麼?如果是原生應用開發而不是跨平臺軟體,你會選用哪種程式語言?久經考驗的 Objective-C 還是 Swift?

為了幫助你作好這個抉擇,我們來看一看使用 Swift 語言進行 iOS 開發會有哪些優勢和弊端。

關於這種程式語言,你必須瞭解哪些資訊?使用 Swift 會有哪些風險?為了開始討論 Swift 語言的優缺點,我們先回顧一下 Swift 的發展歷史。

Swift - 它的歷史和背景故事

Apple 於 2014 年的 WWDC(Worldwide Developers Conference 全球開發者大會)上首次推出了 Swift 這種程式語言,它是可用於 iOS、macOS、tvOS 以及 watchOS 平臺開發的第二種官方程式語言。就在去年 9月份,Swift 已經更新到 4.0 版本,這次更新帶來了很多改變和相容舊版本的模式。

在強調 iOS 8 SDK 釋出的官方新聞稿(譯者注:參見 [Apple 釋出包含 4,000 多個全新 API 的 iOS 8 SDK](https://www.apple.com/cn/newsroom/2014/06/02Apple-Releases-iOS-8-SDK-With-Over-4-000-New-APIs/))中,Apple 對這個新程式語言的描述如下:

“ Swift 是一種適用於 iOS 和 OS X® 的全新而強大的程式語言,有了它,開發者可以更輕鬆地建立精彩的應用程式。Swift 專為 Cocoa® 和 Cocoa Touch® 設計,將組合語言的高效表現與熱門指令碼語言的互動性完美融合。

經過精心設計,Swift 可幫助開發者消除各種常見程式設計錯誤,從而寫出更安全、更可靠的程式碼。

同時,該語言可與 Objective-C® 程式碼共存,讓開發者可以輕鬆將 Swift 整合到現有的應用程式。Xcode® Playgrounds 可即時顯示 Swift 程式碼輸出,賦予編寫 Swift 出色的互動性。”

年紀輕輕的 Swift 語言在 TIOBE “全球最流行的程式語言” 榜上迅速攀升至第 11 名。至此 Swift 語言已經超過它的前輩 Objective-C 7 名,實現了它的初始目標。Swift 之所以能在如此短的時間內全球流行,原因之一是 Apple 這個品牌享譽全世界。即便如此,要與一種經過 30 多年考驗的程式語言競爭並贏得百萬名開發者的信任絕非易事。

所以,讓我們仔細分析一下 Swift 的優缺點—它被選作 iOS 開發的主流語言的誘因以及限制其發展的短板。

使用 Swift 語言開發 iOS 軟體 — Swift 語言的優點

**易讀性 — 易維護性**

Swift 程式碼與人們日常使用的英語非常相似,這得益於借鑑自 C#、Python 和 Ruby 的句法,這三種的程式語言以優雅句法而著稱。相比之下,Objective-C 的句法與 C 的令人恐懼的句法非常接近。因此,具備簡化的句法和語法的 Swift 語言更為直白易懂,其表達方式也更加靈活。實際上,Apple 對 Swift 語言的簡單非常有信心,甚至通過 Swift Playgrounds 這個 iPad 應用程式中的遊戲鼓勵小朋友們學習開發應用程式。

在解釋 Swift 語言的優勢時,連線雜誌的資深撰稿人 Cade Metz 的描述如下:

“ Swift 的優異之處在於它是為普通程式設計師設計的。它的設計適用於所有使用情景,甚至是最簡單的移動應用,Apple 還為它專門開發了名為 “Playgrounds” 的工具,這個工具在自學程式設計時異常有效。”

他進一步分析了 Swift 語言與 Google 的 Go 語言迥然不同的發展規劃。(Google 於 2009 年推出 Go 語言,時至今日這種程式語言仍然在吸引開發者的道路上艱難前行),在此他引用了 Paul Jensen — 一名程式語言分析師的看法:

“ 對於 Google 的 Go 語言,沒有真正值得開發者選用它的理由……Swift 則對開發者很有吸引力(它的直白易懂、簡單明瞭優於 Objective-C)“

此外,有別於 Objective-C,Swift 拋棄了之前雙檔案形式(以 .h 為字尾的標頭檔案 + 以 .m 為字尾的實施檔案的組合定義類),為開發者省去了額外的操作。Swift 去除了模版式的重複工作,同時輔助開發者改進程式碼質量、它所提供的語言特色以及備註形式。

**Swift 言簡意賅**

Swift 的目標之一是程式語言的簡練性。單就字串內插這一項而言,使用 Swift 語言最多可將使用 Objective-C 編寫的移動應用的程式碼量減少 70%。更少的程式碼意味著開發和測試更為快速—因此可以降低維護成本、減少資源耗費。

**易於擴充套件**

直觀明瞭的程式碼可加快開發速度。除此之外,你的產品還是面向未來的,你可以為它新增新特性。亦即你的產品具備易擴充套件性。進一步說,出於長期的投資規劃,你需要意識到相對於 Objective-C 而言,Apple 更可能支援 Swift。

**與 Objective-C 的互操作性**

雖然這方面不是 Swift 的絕對優勢,這個特性必然是有價值的。Buffer 公司(譯者注:這是國外一家社交媒體管理平臺)的一名 iOS 開發者 Jordan Morgan 在他的部落格中寫道:

“ 毫無疑問 — Swift 是一種標誌著未來的新工具。Objective-C 已經開始老去,而且終將喪失它的流行度。但是就現階段而言,他們倆需要能和平共處……Objective-C 建立在一個逐漸過時的程式語言之上,只是為現代技術重新改造了而已。”

正如 Morgan 所說,Swift 並未完全取代 Objective-C,因為 Objective-C 目前是並將持續作為許多移動應用的組成部分,也將需要持續的維護。Swift 能完全與它的前輩互通,因此兩者可以在同一個程式、檔案或者一行程式碼中共存。

**安全性和改進的效能**

正如它的名字所暗示的,Swift 誕生於對迅速的追求。它強調速度和效能,最初這兩方面上它比 Objective-C 提高了 40%。通過達成的多個里程碑以及開發者們執行的測試,這一點已經非常明顯了。

Swift 的另一個優勢是安全性。得益於它的強悍性和靜態資料型別的特點,Swift 幫助開發者在編譯前發現程式錯誤並及時修復錯誤。而且 Swift 具有智慧的針對空指標的安全措施可以規避由無效的資料引用導致的編譯錯誤。

**跨裝置支援**

Swift 不僅支援 iPad 和 iPhone,還支援包括 Apple Watch、Apple TV 和 Mac 在內的全套裝置。

**用於全棧開發的潛力**

IBM 將 Swift 應用於雲服務開發的努力目前非常成功。Swift 在伺服器端可與最流行的後端技術對接。與全棧 Javascript 開發一樣,在應用程式的前端和後端同時使用 Swift 能帶來廣泛的程式碼共享和重用性 — 提高開發速度的同時減少開發投入。

**自動記憶體管理**

在部落格 Security Innovation (安全性創新)中, Kevin Poniatowski 於 2014 年發表的博文中成功預測:

 "我堅信 Swift 自動管理記憶體的特色將得到 Objective-C 開發者的歡迎。這個特效能夠消除一些非常嚴重的程式碼缺陷,例如非常煩人且有很大潛在危害的 ‘釋放後使用’ 這類編碼錯誤"

旨在防止記憶體洩漏、優化程式效能,Swift 的所有 API 都採用了自動引用計數。簡而言之,它自主管理記憶體使得程式以最高效地利用資源。不需要開發者手動設定記憶體,Swift 的慣用工具可以在開發者為適應此變化改寫程式碼時提供支援和指導。

**來自 IBM 和 Apple 的企業支援**

Apple 與 IBM 協作投入 Swift 的發展和利用。Swift 因此獲得了最活躍的開源群體。事實上,Swift 是 Github 上最受關注的程式語言之一。

Swift 有很多優點,尤其是和它的前輩 Objective-C 相比,儘管如此它也受到一些短板的牽制。

使用 Swift 語言開發 iOS 軟體 — Swift 語言的缺點

缺乏與舊版本語言的相容性 (部分解決)

由於新版本的釋出會引入巨大變動,Swift 通常被視作不穩定的。許多開發者抱怨 Xcode 對更新 Swift 程式碼版本的幫助並不能修復所有問題,所以將專案遷移至新 Swift 版本非常費時且成本較高。

在最新發布的 Swift 4.0 中,當你使用 Xcode 編譯 Swift 3 的程式碼時,你可以使用 Swift 4.0 中的大多數新特性。

**根據 Apple 提供的 Swift 4.0 的官方指南**:

“ 使用 Swift 4 編寫的編譯目標可以依靠用 Swift 3 編寫的編譯目標,反之亦然。這意味著對於一個有多個框架組成的大專案,你可以逐個將框架從 Swift 3 向 Swift 4 遷移。”

速度問題

這個語言的早期版本有很多速度問題,不過,如上所述,速度問題隨著新版本的推出有了很大改進。

一個新語言

Swift 的開發目前仍屬於起步階段,它需要很長時間才能發展成熟、發現並修復它的問題區域。“原生” 的庫和工具在數量上仍然非常有限。而且因為它的新穎程度,使用 Swift 的開發者也數量有限。儘管如此,Swift 的開發者群體正迅速壯大,對 Swift 開發者的需求也在增加。

Swift 語言會標誌著 iOS 開發的發展方向嗎?

雖然處於發展初期,Swift 已經創造了很多成功案例。實際上,它的最新版本,Swift 4.0 帶來了極大改進: 更好的版本相容性減少了向 Swift 4.0 過程中的摩擦,Swift 包管理器的改進、API 優化以及其它新增特色。

使用 Swift 的大公司有領英、Coursera、Pandora、推特、Fitbit 以及 Vimeo 等大牌公司,Facebook 和優步對這個語言也重新萌生了興趣。因此伴隨採用率的提升,Swift 有望最終取代 Objective-C 成為 iOS 開發的首選語言