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

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

原文發(fā)布時(shí)間:2017年 12月 8日

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

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

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

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

Swift - 它的歷史和背景故事

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


在強(qiáng)調(diào) iOS 8 SDK 發(fā)布的官方新聞稿(譯者注:參見 [Apple 發(fā)布包含 4,000 多個(gè)全新 API 的 iOS 8 SDK](https://www.apple.com/cn/newsroom/2014/06/02Apple-Releases-iOS-8-SDK-With-Over-4-000-New-APIs/))中土陪,Apple 對(duì)這個(gè)新編程語(yǔ)言的描述如下:

> “ Swift 是一種適用于 iOS 和 OS X? 的全新而強(qiáng)大的編程語(yǔ)言昼汗,有了它,開發(fā)者可以更輕松地創(chuàng)建精彩的應(yīng)用程序鬼雀。Swift 專為 Cocoa? 和 Cocoa Touch? 設(shè)計(jì)顷窒,將匯編語(yǔ)言的高效表現(xiàn)與熱門腳本語(yǔ)言的交互性完美融合。經(jīng)過(guò)精心設(shè)計(jì)源哩,Swift 可幫助開發(fā)者消除各種常見編程錯(cuò)誤鞋吉,從而寫出更安全出刷、更可靠的代碼。同時(shí)坯辩,該語(yǔ)言可與 Objective-C? 代碼共存馁龟,讓開發(fā)者可以輕松將 Swift 集成到現(xiàn)有的應(yīng)用程序。Xcode? Playgrounds 可即時(shí)顯示 Swift 代碼輸出漆魔,賦予編寫 Swift 出色的互動(dòng)性坷檩。”

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

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

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

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

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

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

“ Swift 的優(yōu)異之處在于它是為普通程序員設(shè)計(jì)的侦铜。它的設(shè)計(jì)適用于所有使用情景,甚至是最簡(jiǎn)單的移動(dòng)應(yīng)用钟鸵,Apple 還為它專門開發(fā)了名為 “Playgrounds” 的工具钉稍,這個(gè)工具在自學(xué)編程時(shí)異常有效」姿#”

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

“ 對(duì)于 Google 的 Go 語(yǔ)言俊卤,沒(méi)有真正值得開發(fā)者選用它的理由……Swift 則對(duì)開發(fā)者很有吸引力(它的直白易懂嫩挤、簡(jiǎn)單明了優(yōu)于 Objective-C)“

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


**Swift 言簡(jiǎn)意賅**

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

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

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

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

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

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

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

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

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

Swift 的另一個(gè)優(yōu)勢(shì)是安全性桥帆。得益于它的強(qiáng)悍性和靜態(tài)數(shù)據(jù)類型的特點(diǎn)医增,Swift 幫助開發(fā)者在編譯前發(fā)現(xiàn)程序錯(cuò)誤并及時(shí)修復(fù)錯(cuò)誤。而且 Swift 具有智能的針對(duì)空指針的安全措施可以規(guī)避由無(wú)效的數(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ù)對(duì)接。與全棧 Javascript 開發(fā)一樣菊卷,在應(yīng)用程序的前端和后端同時(shí)使用 Swift 能帶來(lái)廣泛的代碼共享和重用性 — 提高開發(fā)速度的同時(shí)減少開發(fā)投入缔恳。

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

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

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

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

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

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

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

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

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

由于新版本的發(fā)布會(huì)引入巨大變動(dòng)呆抑,Swift 通常被視作不穩(wěn)定的。許多開發(fā)者抱怨 Xcode 對(duì)更新 Swift 代碼版本的幫助并不能修復(fù)所有問(wèn)題扶歪,所以將項(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)年枕,反之亦然。這意味著對(duì)于一個(gè)有多個(gè)框架組成的大項(xiàng)目乎完,你可以逐個(gè)將框架從 Swift 3 向 Swift 4 遷移熏兄。”

速度問(wèn)題

這個(gè)語(yǔ)言的早期版本有很多速度問(wèn)題树姨,不過(guò)摩桶,如上所述,速度問(wèn)題隨著新版本的推出有了很大改進(jìn)帽揪。

一個(gè)新語(yǔ)言

Swift 的開發(fā)目前仍屬于起步階段硝清,它需要很長(zhǎng)時(shí)間才能發(fā)展成熟、發(fā)現(xiàn)并修復(fù)它的問(wèn)題區(qū)域转晰÷茫“原生” 的庫(kù)和工具在數(shù)量上仍然非常有限。而且因?yàn)樗男路f程度查邢,使用 Swift 的開發(fā)者也數(shù)量有限蔗崎。盡管如此,Swift 的開發(fā)者群體正迅速壯大扰藕,對(duì) Swift 開發(fā)者的需求也在增加缓苛。

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

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

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末褐望,一起剝皮案震驚了整個(gè)濱河市勒庄,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌瘫里,老刑警劉巖实蔽,帶你破解...
    沈念sama閱讀 211,123評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異谨读,居然都是意外死亡局装,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門劳殖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)铐尚,“玉大人,你說(shuō)我怎么就攤上這事哆姻⌒觯” “怎么了?”我有些...
    開封第一講書人閱讀 156,723評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵矛缨,是天一觀的道長(zhǎng)爹脾。 經(jīng)常有香客問(wèn)我,道長(zhǎng)劳景,這世上最難降的妖魔是什么誉简? 我笑而不...
    開封第一講書人閱讀 56,357評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮盟广,結(jié)果婚禮上闷串,老公的妹妹穿的比我還像新娘。我一直安慰自己筋量,他們只是感情好烹吵,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評(píng)論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著桨武,像睡著了一般肋拔。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上呀酸,一...
    開封第一講書人閱讀 49,760評(píng)論 1 289
  • 那天凉蜂,我揣著相機(jī)與錄音,去河邊找鬼性誉。 笑死窿吩,一個(gè)胖子當(dāng)著我的面吹牛蕉鸳,可吹牛的內(nèi)容都是我干的念脯。 我是一名探鬼主播,決...
    沈念sama閱讀 38,904評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼曙寡,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼倾哺!你這毒婦竟也來(lái)了轧邪?” 一聲冷哼從身側(cè)響起刽脖,我...
    開封第一講書人閱讀 37,672評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎忌愚,沒(méi)想到半個(gè)月后曲管,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,118評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡菜循,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評(píng)論 2 325
  • 正文 我和宋清朗相戀三年翘地,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片癌幕。...
    茶點(diǎn)故事閱讀 38,599評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡衙耕,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出勺远,到底是詐尸還是另有隱情橙喘,我是刑警寧澤,帶...
    沈念sama閱讀 34,264評(píng)論 4 328
  • 正文 年R本政府宣布胶逢,位于F島的核電站厅瞎,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏初坠。R本人自食惡果不足惜和簸,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望碟刺。 院中可真熱鬧锁保,春花似錦、人聲如沸半沽。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)者填。三九已至浩村,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間占哟,已是汗流浹背心墅。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留榨乎,地道東北人嗓化。 一個(gè)月前我還...
    沈念sama閱讀 46,286評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像谬哀,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子严肪,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 1史煎、通過(guò)CocoaPods安裝項(xiàng)目名稱項(xiàng)目信息 AFNetworking網(wǎng)絡(luò)請(qǐng)求組件 FMDB本地?cái)?shù)據(jù)庫(kù)組件 SD...
    陽(yáng)明先生_X自主閱讀 15,969評(píng)論 3 119
  • 在會(huì)所工作谦屑,剛開始那一陣,看到那些名車豪車就會(huì)熱血沸騰篇梭,每天拍照發(fā)到朋友圈滿足自己的虛榮心氢橙。再過(guò)了一段時(shí)間你就會(huì)發(fā)...
    蔡海山閱讀 813評(píng)論 2 49
  • 往事只在回首時(shí)明白 記憶只在回顧里清晰 故人只在回憶中情深 獨(dú)自,走過(guò)暗黑隧道 下一個(gè)路口 依舊走著我一個(gè)
    叢闌閱讀 209評(píng)論 0 3
  • 水木清 她的一生像是一次極限運(yùn)動(dòng)恬偷,從最高到最低悍手,用盡了一世的光陰。 她的一生袍患,也曾有最美的生活坦康,“紅燭金帳,翠柳濃...
    剎那年華之水木清閱讀 483評(píng)論 0 5
  • 當(dāng)你老了诡延,走不動(dòng)了滞欠,還有我。 當(dāng)你老了肆良, 請(qǐng)你取下筛璧, 我為你寫就的詩(shī)篇。 那些潛伏在字里行間的誓言惹恃, 依舊...
    池九閱讀 688評(píng)論 2 6