使用 Swift 相对于 Objective-C 的优势

已发表: 2021-10-05

一篇旨在突出 Swift 编程语言的主要优点的文章

在这里,我想从一个快速测验开始。
问题: iOS 应用程序是用什么编程语言编写的?

一)C#

b) 目标-C

c) 斯威夫特

显然,如果您选择了以上所有内容 - 您 100% 正确,所有提到的语言都可以用于 iOS 开发。 尽管如此,由于巨大的“代沟”将它们分开,因此提及它们都不同并不奇怪。

...维基百科说这一切都是从 Objective-C 开始的,当时编程语言的祖父是由 Brad Cox 和 Tom Love 在 1980 年代早期推出的。 先是被 NeXT 收购,后来被苹果收购,1996 年他们在 OS X 中使用 OpenStep。从那时起,苹果操作系统的很大一部分都是在 Objective-C 上开发的,这是它的最高水平。

然而,众所周知,有一天一切美好的事物都会成为美好的回忆,而这正是 Objective 现在正在发生的事情。 我 100% 确定您听说过 2048 游戏、Wordpress iOS 或 FireFox iOS 浏览器等应用程序。 令人惊讶的是,编写这些应用程序的 iOS 编码语言不是 Objective——而是 Swift。

迅速。 iOS 应用程序编程语言。

(此信息在文章发布时到期 - 2017 年 2 月;稍后可能会应用一些更改)

Apple 愿意让客户感到惊讶,这超出了所有人的预期——尤其是开发人员在 2014 年 6 月初将新的 ios 应用程序编程语言带到这个世界时感到非常惊讶。 经过 3 年的 Swift 开发,程序员们仍然没有停止工作——已经有几次更新,2016 年 9 月发布了最新版本的 Swift 4.0。用这种开源语言编写的代码可以应用于 macOS 、iOS、watchOS、tvOS 和 (!) Linux。
2 年后的今天,Swift 在所有现有的移动开发语言中占据了稳固的地位。 Stack Overflow 开发者调查结果声称 Swift 在最受欢迎和想要的语言中占据首位,而 Objective-C 则是今年(2019 年)最令人恐惧的语言。

考虑到所有要点,是否有任何优势使 Swift 脱颖而出? 它有机会参加Swift vs Objective竞赛吗?

另请阅读:iOS 和 Android 开发之间的 6 个差异:神话与现实

Swift 与 Objective-C

正如他们所说,课程的马匹,但苹果公司的 Swift 编程语言有一些不可否认的优点。 这里有一堆以图形方式介绍的优缺点供您研究。

Swift 与 Objective-C

即使具有所有高科技功能的编码过程对您来说似乎是一门火箭科学,但 Swift 带来的更简单和渐进的方法也不容忽视。 但另一方面,Swift 也有一些可能被称为缺点的东西,例如必须使用 Xcode 作为主要的集成开发环境; 一些开发人员抱怨他们会更好地使用在稳定性和功能上超过 Xcode 的第三方 IDE。

使用 Swift 的原因

尽管前面列出了所有内容,但全球许多开发公司选择坚持使用 Swift 语言选项,Mind Studios 也不例外。 为什么我们在 Objective-C 的比较中更喜欢 Swift? 有几个容易考虑的因素。

斯威夫特是...

1)...更新。

Objective-C 已经 33 岁了,最初是 C 语言的延续。 形成鲜明对比的是,Swift 是作为一种独立于 Apple 的语言出现的,因为公司很难支持和开发 Objective。 在 3 年的存在中,Swift 得到了积极的开发,新版本 4 将很快交付。

2)...更干净。

Swift 添加了新的语法,与以前在 Objective-C 上相比,它似乎更容易阅读、编译和检查代码。

3)...更省时。

由于 Swift 需要编写的代码行数较少,因此,适当地,它需要最少的时间来完成代码创建工作的范围。

4)...更少的内存消耗。

在 Objective-C 的早期,如果有一个对象链接——它会占用一些随机存取内存; 当 Swift 被实现时——Apple 不再关注面向对象的编程,而是转向了结构。 因此,引用类型数据和 SDK 类的数量减少了,现在更改为值类型。 这导致了 Swift 中更有效的内存使用。

5)...更快。

Swift 比 Obj-C 快

Swift 设法比 Obj-C 更快地遵守数据; 与 Objective-C 相同,它使用 LLVM 编译器为其运行的平台优化本机代码生成。 在 Swift 中,大量数组被重写为结构; 一些类在 Objective-C 早期曾经是对象,这导致代码工作过程变慢; 尽管在 Xcode IDE 中编译代码需要更长的时间,但毕竟代码在 Swift 上运行速度更快。

6)...不仅面向iOS。

正如前面提到的,Swift 已经适用于Linux ,一些程序员也已经在 Android 上试过了。 根据我们的经验,服务器部分也可以用 Swift 编写。

7)...一种开源语言。

显然所有技术文档都可以阅读——这基本上意味着它可以用于您未来的应用产品。 更重要的是 - 所有愿意的开发人员都可以提出他们的解决方案,因为 Apple 已经为 Swift 错误跟踪创建了 Jira。

8)……一种类型安全的语言。

与 Objective-C 形成对比,后者从未如此。 根据 Stack Overflow 的数据,类型安全不仅对运行时有帮助,而且对编译时也有帮助。 Swift 仍然不会在运行时检查类型,但会在编译时进行检查,这已经有助于消除很多错误。

9)...一种带有枚举、可选类型和方便开关的语言。

...这基本上意味着使用起来更安全。 Objective-C 一直是一种面向对象的语言,但通过为 Swift 编写的一些结构,它最终减少了崩溃并提高了安全性。 同样,Apple 首先添加了可选类型,然后添加了枚举而不是整数值。 可选类型有助于检查代码中对象的存在,从而避免额外的崩溃。 借助对象的枚举和开关,Apple 希望让编码体验更加迷人。
Swift 枚举的示例:

枚举的一个例子:
Swift 枚举的一个例子然而,在 Obj-C 中,它将是
enum CompassPoint { case north case south case east case west }
 typedef NS_ENUM(NSInteger, CompassPoint) { north, south, east, west };

开关:
在 Swift 代码中,它们看起来像相比之下,这里是 Obj-C 开关
switch character { case "a", "A": print("The letter A") case "b": print("The letter B”) default: print("Other letter") }
 switch (compassPoint) {
 case north: NSLog(@"North"); break; case south: NSLog(@"South"); break; case east: NSLog(@"East"); break; case west: NSLog(@"West"); break; default: break; }

可选类型的示例,仅在 Swift 中出现
解包可选:
 var test: String? if let test = test { print(“\(test) is unwrapped now ??”) } guard let test = test else { print(“test is nil ??”) return } print(“\(test) is unwrapped!”)
####9)...不可阻挡的升级。 正如已经提到的,4 个版本的全新 Swift 已经面世,这些天我们正在等待 Swift 3.1 尽快交付。 此外,有传言称即将推出的 [Swift 4.0](https://themindstudios.com/blog/swift-4-vs-swift-3-differences/) 将具有向后兼容性 - 这意味着与旧语言版本的集成3.1、3.0 等在未来会变得更容易。

另请阅读:iOS 开发的架构模式

这一切都很好。

在 Objective-C 上使用 Swift 的优点

如果有人在真正尝试之前就试图谈论技术,那将是一种不受支持的说法。 因此,根据我们在 Mind Studios 中已经拥有的经验来判断 - 使用 Swift 非常方便。
我们最近的几个应用程序都是 Swift 编写的,包括:

  • Gadh iOS - 一款可证明与您的律师进行在线电话和视频咨询的应用程序
  • Stern Fit - 热情运动员的社交网络
  • TapToTrip - 一个方便的路线和旅行规划器
  • LIT - 高级 EPUB 电子阅读器
  • Unagrande YogaClub - 为热情的人提供的瑜伽视频课程
    前面提到的所有应用程序都涉及各种技术,可以在 Swift 上轻松实现。

您想了解更多有关增强现实开发套件的信息吗?

总结一下 - 你应该坚持哪种语言?

这个问题本身并没有一个普遍的答案。 一方面,正如 IT 中经常发生的那样——最新鲜的技术往往是一种解决方案; 另一方面,由于每个项目都不同,因此在中途换马可能不是最佳策略。 因此,无论您决定采用哪种方式,只要确保它非常适合该特定市场行业的商业模式以及您为未来产品选择的功能。

由 Max Mashkov、Yurii Smirnov 和 Elina Bessarabova 撰写。

需要咨询您的项目使用哪种技术? 给我们留言!