Swift語言 | Swift 語言開發(fā) iOS 應(yīng)用程序的利弊

目前全球共有超過 7 億臺 iPhone 處于活躍狀態(tài),這造就了 iOS 作為全球第二大移動設(shè)備平臺的狀態(tài)。雖然安卓系統(tǒng)的全球市場占有率超過 iOS 系統(tǒng),但在諸如美國、法國和英國的區(qū)域性市場中 iOS 系統(tǒng)仍然占據(jù)主導(dǎo)地位。因此許多公司專注于 iOS 平臺進(jìn)行軟件開發(fā),因?yàn)樗麄儗?iOS 平臺視作關(guān)鍵投資機(jī)會。

如果你的公司也正計(jì)劃跟隨 iOS 軟件開發(fā),那么你需要作出一個(gè)至關(guān)重要的決定。你需要為你的產(chǎn)品選擇合適的技術(shù)組合。你的目標(biāo)是什么?如果是原生應(yīng)用開發(fā)而不是跨平臺軟件,你會選用哪種編程語言?久經(jīng)考驗(yàn)的 Objective-C 還是 Swift?

為了幫助你作好這個(gè)抉擇,我們來看一看使用 Swift 語言進(jìn)行 iOS 開發(fā)會有哪些優(yōu)勢和弊端。

關(guān)于這種編程語言,你必須了解哪些信息?使用 Swift 會有哪些風(fēng)險(xiǎn)?為了開始討論 Swift 語言的優(yōu)缺點(diǎn),我們先回顧一下 Swift 的發(fā)展歷史。

Swift - 它的歷史和背景故事

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

image

在強(qiáng)調(diào) iOS 8 SDK 發(fā)布的官方新聞稿(譯者注:參見 Apple 發(fā)布包含 4,000 多個(gè)全新 API 的 iOS 8 SDK)中,Apple 對這個(gè)新編程語言的描述如下:

“ Swift 是一種適用于 iOS 和 OS X? 的全新而強(qiáng)大的編程語言,有了它,開發(fā)者可以更輕松地創(chuàng)建精彩的應(yīng)用程序。Swift 專為 Cocoa? 和 Cocoa Touch? 設(shè)計(jì),將匯編語言的高效表現(xiàn)與熱門腳本語言的交互性完美融合。

經(jīng)過精心設(shè)計(jì),Swift 可幫助開發(fā)者消除各種常見編程錯(cuò)誤,從而寫出更安全、更可靠的代碼。

同時(shí),該語言可與 Objective-C? 代碼共存,讓開發(fā)者可以輕松將 Swift 集成到現(xiàn)有的應(yīng)用程序。Xcode? Playgrounds 可即時(shí)顯示 Swift 代碼輸出,賦予編寫 Swift 出色的互動性?!?/p>

年紀(jì)輕輕的 Swift 語言在 TIOBE “全球最流行的編程語言” 榜上迅速攀升至第 11 名。至此 Swift 語言已經(jīng)超過它的前輩 Objective-C 7 名,實(shí)現(xiàn)了它的初始目標(biāo)。Swift 之所以能在如此短的時(shí)間內(nèi)全球流行,原因之一是 Apple 這個(gè)品牌享譽(yù)全世界。即便如此,要與一種經(jīng)過 30 多年考驗(yàn)的編程語言競爭并贏得百萬名開發(fā)者的信任絕非易事。

所以,讓我們仔細(xì)分析一下 Swift 的優(yōu)缺點(diǎn)—它被選作 iOS 開發(fā)的主流語言的誘因以及限制其發(fā)展的短板。

使用 Swift 語言開發(fā) iOS 軟件 — Swift 語言的優(yōu)點(diǎn)

****易讀性 — 易維護(hù)性****

Swift 代碼與人們?nèi)粘J褂玫挠⒄Z非常相似,這得益于借鑒自 C#、Python 和 Ruby 的句法,這三種的編程語言以優(yōu)雅句法而著稱。相比之下,Objective-C 的句法與 C 的令人恐懼的句法非常接近。因此,具備簡化的句法和語法的 Swift 語言更為直白易懂,其表達(dá)方式也更加靈活。實(shí)際上,Apple 對 Swift 語言的簡單非常有信心,甚至通過 Swift Playgrounds 這個(gè) iPad 應(yīng)用程序中的游戲鼓勵小朋友們學(xué)習(xí)開發(fā)應(yīng)用程序。

在解釋 Swift 語言的優(yōu)勢時(shí),連線雜志的資深撰稿人 Cade Metz 的描述如下:

“ Swift 的優(yōu)異之處在于它是為普通程序員設(shè)計(jì)的。它的設(shè)計(jì)適用于所有使用情景,甚至是最簡單的移動應(yīng)用,Apple 還為它專門開發(fā)了名為 “Playgrounds” 的工具,這個(gè)工具在自學(xué)編程時(shí)異常有效?!?/p>

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

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

此外,有別于 Objective-C,Swift 拋棄了之前雙文件形式(以 .h 為后綴的頭文件 + 以 .m 為后綴的實(shí)施文件的組合定義類),為開發(fā)者省去了額外的操作。Swift 去除了模版式的重復(fù)工作,同時(shí)輔助開發(fā)者改進(jìn)代碼質(zhì)量、它所提供的語言特色以及備注形式。

image

****Swift 言簡意賅****

Swift 的目標(biāo)之一是編程語言的簡練性。單就字符串內(nèi)插這一項(xiàng)而言,使用 Swift 語言最多可將使用 Objective-C 編寫的移動應(yīng)用的代碼量減少 70%。更少的代碼意味著開發(fā)和測試更為快速—因此可以降低維護(hù)成本、減少資源耗費(fèi)。

****易于擴(kuò)展****

直觀明了的代碼可加快開發(fā)速度。除此之外,你的產(chǎn)品還是面向未來的,你可以為它添加新特性。亦即你的產(chǎn)品具備易擴(kuò)展性。進(jìn)一步說,出于長期的投資規(guī)劃,你需要意識到相對于 Objective-C 而言,Apple 更可能支持 Swift。

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

雖然這方面不是 Swift 的絕對優(yōu)勢,這個(gè)特性必然是有價(jià)值的。Buffer 公司(譯者注:這是國外一家社交媒體管理平臺)的一名 iOS 開發(fā)者 Jordan Morgan 在他的博客中寫道:

“ 毫無疑問 — Swift 是一種標(biāo)志著未來的新工具。Objective-C 已經(jīng)開始老去,而且終將喪失它的流行度。但是就現(xiàn)階段而言,他們倆需要能和平共處……Objective-C 建立在一個(gè)逐漸過時(shí)的編程語言之上,只是為現(xiàn)代技術(shù)重新改造了而已。”

正如 Morgan 所說,Swift 并未完全取代 Objective-C,因?yàn)?Objective-C 目前是并將持續(xù)作為許多移動應(yīng)用的組成部分,也將需要持續(xù)的維護(hù)。Swift 能完全與它的前輩互通,因此兩者可以在同一個(gè)程序、文件或者一行代碼中共存。

****安全性和改進(jìn)的性能****

正如它的名字所暗示的,Swift 誕生于對迅速的追求。它強(qiáng)調(diào)速度和性能,最初這兩方面上它比 Objective-C 提高了 40%。通過達(dá)成的多個(gè)里程碑以及開發(fā)者們執(zhí)行的測試,這一點(diǎn)已經(jīng)非常明顯了。

Swift 的另一個(gè)優(yōu)勢是安全性。得益于它的強(qiáng)悍性和靜態(tài)數(shù)據(jù)類型的特點(diǎn),Swift 幫助開發(fā)者在編譯前發(fā)現(xiàn)程序錯(cuò)誤并及時(shí)修復(fù)錯(cuò)誤。而且 Swift 具有智能的針對空指針的安全措施可以規(guī)避由無效的數(shù)據(jù)引用導(dǎo)致的編譯錯(cuò)誤。

****跨設(shè)備支持****

Swift 不僅支持 iPad 和 iPhone,還支持包括 Apple Watch、Apple TV 和 Mac 在內(nèi)的全套設(shè)備。

****用于全棧開發(fā)的潛力****

IBM 將 Swift 應(yīng)用于云服務(wù)開發(fā)的努力目前非常成功。Swift 在服務(wù)器端可與最流行的后端技術(shù)對接。與全棧 Javascript 開發(fā)一樣,在應(yīng)用程序的前端和后端同時(shí)使用 Swift 能帶來廣泛的代碼共享和重用性 — 提高開發(fā)速度的同時(shí)減少開發(fā)投入。

****自動內(nèi)存管理****

在博客 Security Innovation (安全性創(chuàng)新)中, Kevin Poniatowski 于 2014 年發(fā)表的博文中成功預(yù)測:

"我堅(jiān)信 Swift 自動管理內(nèi)存的特色將得到 Objective-C 開發(fā)者的歡迎。這個(gè)特性能夠消除一些非常嚴(yán)重的代碼缺陷,例如非常煩人且有很大潛在危害的 ‘釋放后使用’ 這類編碼錯(cuò)誤"

旨在防止內(nèi)存泄漏、優(yōu)化程序性能,Swift 的所有 API 都采用了自動引用計(jì)數(shù)。簡而言之,它自主管理內(nèi)存使得程序以最高效地利用資源。不需要開發(fā)者手動設(shè)置內(nèi)存,Swift 的慣用工具可以在開發(fā)者為適應(yīng)此變化改寫代碼時(shí)提供支持和指導(dǎo)。

****來自 IBM 和 Apple 的企業(yè)支持****

Apple 與 IBM 協(xié)作投入 Swift 的發(fā)展和利用。Swift 因此獲得了最活躍的開源群體。事實(shí)上,Swift 是 Github 上最受關(guān)注的編程語言之一。

Swift 有很多優(yōu)點(diǎn),尤其是和它的前輩 Objective-C 相比,盡管如此它也受到一些短板的牽制。

使用 Swift 語言開發(fā) iOS 軟件 — Swift 語言的缺點(diǎn)

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

由于新版本的發(fā)布會引入巨大變動,Swift 通常被視作不穩(wěn)定的。許多開發(fā)者抱怨 Xcode 對更新 Swift 代碼版本的幫助并不能修復(fù)所有問題,所以將項(xiàng)目遷移至新 Swift 版本非常費(fèi)時(shí)且成本較高。

在最新發(fā)布的 Swift 4.0 中,當(dāng)你使用 Xcode 編譯 Swift 3 的代碼時(shí),你可以使用 Swift 4.0 中的大多數(shù)新特性。

根據(jù) Apple 提供的 Swift 4.0 的官方指南

“ 使用 Swift 4 編寫的編譯目標(biāo)可以依靠用 Swift 3 編寫的編譯目標(biāo),反之亦然。這意味著對于一個(gè)有多個(gè)框架組成的大項(xiàng)目,你可以逐個(gè)將框架從 Swift 3 向 Swift 4 遷移?!?/p>

速度問題

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

一個(gè)新語言

Swift 的開發(fā)目前仍屬于起步階段,它需要很長時(shí)間才能發(fā)展成熟、發(fā)現(xiàn)并修復(fù)它的問題區(qū)域?!霸?的庫和工具在數(shù)量上仍然非常有限。而且因?yàn)樗男路f程度,使用 Swift 的開發(fā)者也數(shù)量有限。盡管如此,Swift 的開發(fā)者群體正迅速壯大,對 Swift 開發(fā)者的需求也在增加。

Swift 語言會標(biāo)志著 iOS 開發(fā)的發(fā)展方向嗎?

雖然處于發(fā)展初期,Swift 已經(jīng)創(chuàng)造了很多成功案例。實(shí)際上,它的最新版本,Swift 4.0 帶來了極大改進(jìn): 更好的版本兼容性減少了向 Swift 4.0 過程中的摩擦,Swift 包管理器的改進(jìn)、API 優(yōu)化以及其它新增特色。

使用 Swift 的大公司有領(lǐng)英、Coursera、Pandora、推特、Fitbit 以及 Vimeo 等大牌公司,F(xiàn)acebook 和優(yōu)步對這個(gè)語言也重新萌生了興趣。因此伴隨采用率的提升,Swift 有望最終取代 Objective-C 成為 iOS 開發(fā)的首選語言。

原文地址:The Good and the Bad of Developing iOS App on Swift

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 原文地址:The Good and the Bad of Developing iOS App on Swift ...
    mediter閱讀 5,237評論 8 11
  • 1、通過CocoaPods安裝項(xiàng)目名稱項(xiàng)目信息 AFNetworking網(wǎng)絡(luò)請求組件 FMDB本地?cái)?shù)據(jù)庫組件 SD...
    陽明AI閱讀 16,228評論 3 119
  • 人的一生中會碰到很多人,會遇到很多事。會哭泣,會大笑,會默默流淚,也會轉(zhuǎn)身忘記。小時(shí)不知學(xué),認(rèn)為那些都是騙人的,那...
    趙瑩Z閱讀 566評論 0 0
  • 如果你要離開 請幫我關(guān)上燈,讓黑夜淹沒你離開的背影 如果你要離開 請幫我拉上門,讓枯木阻隔你遠(yuǎn)去的腳步聲 如果你要...
    幾秝閱讀 146評論 0 0
  • 起風(fēng)了。被吹得鼓鼓囊囊。對一個(gè)完全變形的自己,很不適應(yīng)。風(fēng),又拐了彎,我慢慢地復(fù)原。女主人的手雖然纖細(xì)柔弱,卻也捏...
    千年女妖lp閱讀 1,106評論 2 3

友情鏈接更多精彩內(nèi)容