2014 年,Apple 推出了一种更简单的新方法来构建 iOS 应用程序 - Swift。然而,在 2020 年,IT 经理和 CTO 仍然难以在 Objective-C 和 Swift 之间做出选择。为了消除任何疑问,我们比较了它们并准备了本指南。
什么是Objective-C?
Objective-C 是 Apple 自 90 年代以来使用的一种面向对象的编程语言。它结合了两种早期语言 - C 和 Smalltalk 的优点。
1996 年,Apple 超过了 NeXT,后者的开发工具将使用 Objective-C。这些工具后来被包含在 Xcode 中。这就是 Apple 开始使用 Objective-C 进行 Mac OS X 开发的方式。因此,Objective-C 成为每个想要为 OS X 和 iOS 创建应用程序的人的首选语言。
什么是Swift?
Swift 的历史要简单得多,也更短。它由 Apple 创建并于 2014 年在其全球开发者大会上推出。它是一种全新的语言,旨在为 Apple 的操作系统开发软件。从那时起,该语言得到了极大的发展。最新的稳定版本已于 2020 年 4 月 29 日发布,名称为5.2.4。
Objective-C 与 Swift 的比较有什么意义?
造成这种困境的原因至少有两个。
首先,它们都得到 Apple 的支持并用于他们的产品。如果考虑原生 iOS 应用程序,这两个将成为“最原生”。
其次,Swift 并不是 Objective-C 的直接继承者。这两种语言具有不同的功能,同时用于iOS 移动应用程序开发。
开发人员和产品经理想知道他们中的哪一个最好。哪些会满足他们的需求并且不会破坏他们的预算?
如果您不知道为您计划开发的 iOS 应用程序选择 Swift 还是 Objective-C,那么您将在阅读本文时找到答案。
如何比较 Swift 和 Objective-C?
我们经常比较技术和编程语言。部分是为了满足我们的需求,部分是因为我们渴望与您分享这些知识。
尽管您几乎可以想到数十种功能进行比较,但我们还是决定将重点放在十个最重要的问题上。它们都会影响 iOS 应用程序开发的成本、质量和便利性。下面的列表和比较将帮助您找出最适合您的项目的技术。
-
开发环境
开发环境是神奇发生的地方。是否有一个易于使用的环境,它的价格有多昂贵,以及市场上是否有任何替代解决方案是很重要的。
如果您使用 Objective-C 开发 iOS 或 OS X 应用程序,您很可能会使用 Xcode IDE。还有其他可用的环境,例如来自 Microsoft 的 AppCode 或 Visual Studio Code,但它们需要下面的 Xcode 才能正常工作。
Xcode 为您提供软件开发工具包,几乎可以提供您开发 iOS 应用程序所需的一切。工具、编译器、API 和框架——它们都在那里。此外,您可以在应用程序中使用可自定义的预构建元素。
Xcode 与 Cocoa 集成在一起,这里更重要的是 Cocoa Touch——您将在 iOS 上使用的应用程序开发环境。但是,如果您决定使用 Swift,Cocoa Touch 也可以让您为 Apple Watch 和 Apple TV 创建应用程序。
不过,这并不是开发环境的唯一区别。还有一个叫做Swift Playgrounds 的东西。您可以使用它来学习在 Swift 中编写代码,也可以将其用作测试一小部分代码的环境,而无需编译所有代码并创建完整的应用程序。简单地说,当您有解决方案的想法时,您可以在 Playgrounds 中编写代码并立即检查它是如何工作的。
使用 Swift,您仍然可以在与 Objective-C 相同的环境中工作,但您还可以访问更新的解决方案,以增加可能性。这一轮是Swift。
2. APP用户界面
它们都是原生 iOS 语言,因此无需担心您的应用程序是否会完美运行。无论您选择其中的哪一个,它都会。最大的区别在于 iOS 兼容性和 UI 开发的易用性。
Objective-C 几乎和山一样古老,因此您的应用程序可以在任何可用的 iOS 版本上运行。另一方面,Swift 至少需要 iOS 7。这意味着你需要分析你的用户拥有哪些设备,并决定你是否可以将自己限制在 2013 年之后发布的 iPhone 和 iPad 上。老实说,有仍然使用 7 年之久的设备的人并不多,所以这应该不是问题。
关于 UI 开发的易用性,Apple 引入了 SwiftUI。这个内置在 Xcode 11 中的 UI 设计工具在 iOS 13(或更高版本,当它出现时)运行。它使为所有 Apple 平台构建原生 UI 变得非常容易。您可以通过编写代码或调整预览来组装您的 UI。更改同时在代码和预览中可见。
这是一个平局。不过,Swift 的优势在未来可能会越来越大。
3. 编码速度
编码速度会影响应用程序创建的总体成本并缩短上市时间。尽管 Objective-C 和 Swift 都是 iOS 的原生语言,但它们并不相同。Swift 是一种更现代的语言。由于更简单的语法,它也是人性化的。这意味着它也更容易学习。
更重要的是,据说与用 Objective-C 编写的应用程序相比,用 Swift 编写的同一个应用程序将只有 30% 的代码行。一个流行的例子是 Lyft,它将 Objective-C 转换为 Swift,丢失了超过 60% 的代码。减少代码量不仅可以加快开发过程,还可以减少错误和更快、更便宜的测试。
Swift再次获胜。
4. 性能
您选择的技术越好、越合适,性能就越高。更高的性能带来更好的用户体验、更轻松的重构和维护等等。
Apple 声称 Swift 比 Objective-C 快 2.6 倍。这可能要归功于 Swift 被创建为一种全新的语言,其目的是......迅速。
尽管 Apple 为 Objective-C 配备了垃圾收集器,但它仍然不如编写好的 Swift 代码高效。更简单的语法和在编译时执行类型检查,帮助 Swift 超越 Objective-C。为了优化内存管理,Swift 使用了 ARC(自动引用计数)。此外,Swift 支持动态库,这也提高了应用程序的性能。
Swift 获胜,它相对于 Objective-C 的优势将会增长。
5. 社区与支持
适当的支持让您确信您将获得成功开发所需的专业知识。除了专业支持之外,成为专家社区的一员也很有帮助,他们将用他们的经验和知识为您提供支持。
尽管 Apple 仍然支持 Objective-C,但它从来就不是一种开源语言。相反,Swift 是开源的,因此您可以详细了解它的工作原理并更彻底地了解其基本原理。但还有更多。开放意味着有更多的人参与更多的项目和更多的 Swift 开发者可用的资源。
虽然Objective-C 拥有超过30 年的社区,但其人口将减少。新手倾向于学习 Swift,并且每年都会有更少的程序员可以用他们的专业知识为您提供支持。即使在今天,在 StackShare 用户中,大约有3500 人声明使用 Objective-C,超过6000 人使用 Swift。同时,Swift 开发者社区非常重要。更重要的是,甚至其他公司也开发了他们的 Swift 框架(如 IBM)。
再次,Swift显然赢得了这一轮。
6. 工具包
对于复杂的开发,标准 IDE 通常是不够的。为确保足够方便,开发人员使用额外的工具包。Objective-C 或 Swift 程序员也不例外。供应虽然有所不同。
由于Objective-C的悠久历史,您会发现Apple和一些第三方公司提供的许多工具。但是,我不会指望为 Objective-C 开发创建新工具。
另一方面,由于 Swift 是一种开源语言,因此很容易找到第三方公司和贡献者为此语言提供的工具。此外,Apple 为您提供了广泛的工具来提高您的开发性能。最近他们发布了一些工具,比如支持 Apple Pencil 的 PencilKit、支持第三方应用的 SiriKit 和 Apple 的助手,或者 MapKit 增加了 UI 调整的可能性。
Swift也在这里获胜,尽管优势不是那么大。但是,未来 Swift 的环境将比 Objective-C 的环境发展得更快。
7. 稳定性
Objective-C 已经存在 30 多年了。最后发布的版本是 2.0,它自 2016 年以来一直存在。它不会比那更稳定。如果有任何错误,我们已经知道了。
Swift 现在才 6 岁,一年前的 2019 年 3 月,Swift 5 发布了。今天我们可以使用 5.2.4 版本。这表明 Swift 不如 Objective-C 稳定,但这是由于不断改进和发展。
尽管存在年龄差异,但我会在这里呼吁平局。
8. 文件
不能高估文档的重要性。您越了解该语言及其工具,就越容易避免错误。
这两种语言都有大量的文档。Objective-C 主要是因为它已经存在 30 多年了。您可以在Apple 存档中找到它的文档。但是,Swift 的文档会不断更新。你会发现更多关于这种语言的新资源。另外,请记住它是开源的,因此您可以找到更多的第三方资源。您应该从Apple 开发人员服务和专门的Swift 网页开始。还有一个适用于 Swift的 GitHub存储库。
由于不断的实现,Swift 也赢得了这一轮。
9. 平台成熟度
Objective-C 比 Swift 古老很多。但这是否意味着它更成熟了?Swift 也是根据 Apple 在 Objective-C 方面的经验设计的。
因此,即使它的历史要短得多,但 Swift 并不成熟,因为它来自一个悠久的传统。而且,我们已经使用了 5.2.4 版本,它只表明 Swift 增长得更快。
Apple 不断努力让 Swift 成为您的首选。Swift 周围的环境正在成长,尽管 Objective-C 可能更加成熟,
Swift也是一个“成年人”。所以,我们在这里平局。
10. 人才库
您梦寐以求的解决方案可能是有史以来最好的解决方案,但如果没有知道如何使用它的专家,那将是徒劳的。对于一家公司来说,了解找到他们的开发人员的成本和容易程度至关重要。
根据最近于 2020 年 5 月发布的Tiobe 指数,Swift 是第 11 大最受欢迎的语言,其投票数几乎是前一年的三倍。Objective-C 仅获得 50% 的支持 Swift 的选票。Objective-C 开发人员的数量将会减少,而Swift 开发人员的数量将会增加。
这有几个原因。首先,苹果可能会稳步退出Objective-C。您可以观察 Swift 是如何开发和推广的。其次,Swift 更容易学习和开始编码。第三,Swift 是一种开源语言,它总是促进社区的发展。
Swift以鼻子赢了最后一轮。
使用 Swift 和 Objective-C 编码的 iOS 应用程序示例
您可能需要考虑的另一个因素是谁以及如何使用特定语言。只是这一次你需要小心结论。2014 年之前创建的 iOS 应用程序很可能是用 Objective-C 编写的,主要原因是在那年之前没有 Swift。
今天,很多公司都在研究将 Objective-C 转换为 Swift 的可能性。同时,我们还没有听说有人试图向后转换他们的代码。此外,由于两种语言都可以在同一个应用程序中使用,因此您经常会遇到同时使用 Objective-C 和 Swift 编写的软件。
例如,Uber 同时使用 Objective-C 和 Swift。另一方面,Lyft 已完全转向 Swift。LinkedIn 及其应用程序也是如此。很难找到一家愿意留在 Objective-C 的公司。这也难怪。