使用 Swift 语言开发 iOS 应用程序的利弊

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

原文发布时间:2017年 12月 8日

目前全球共有超过 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 开发的首选语言。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,590评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,808评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,151评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,779评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,773评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,656评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,022评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,678评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,038评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,756评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,411评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,005评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,973评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,053评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,495评论 2 343

推荐阅读更多精彩内容

  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明先生_x阅读 15,967评论 3 119
  • 在会所工作,刚开始那一阵,看到那些名车豪车就会热血沸腾,每天拍照发到朋友圈满足自己的虚荣心。再过了一段时间你就会发...
    蔡海山阅读 809评论 2 49
  • 往事只在回首时明白 记忆只在回顾里清晰 故人只在回忆中情深 独自,走过暗黑隧道 下一个路口 依旧走着我一个
    丛阑阅读 208评论 0 3
  • 水木清 她的一生像是一次极限运动,从最高到最低,用尽了一世的光阴。 她的一生,也曾有最美的生活,“红烛金帐,翠柳浓...
    刹那年华之水木清阅读 480评论 0 5
  • 当你老了,走不动了,还有我。 当你老了, 请你取下, 我为你写就的诗篇。 那些潜伏在字里行间的誓言, 依旧...
    池九阅读 686评论 2 6