Swift与Objective-C在2019年

Objective-C由Brad Cox和Tom Love于1984年创建,是C的扩展。它在C语言中添加了SmallTalk样式消息传递和对象定向。

Objective-C的比较优势:

  1. 与C ++和Objective C ++的互操作性
  2. 动态功能,例如方法混乱
  3. 更好地支持编写二进制框架。

Objective-C的缺点:

  1. 由于Objective-C建立在C之上,因此缺少命名空间 。 Objective-C应用程序中的所有类都应该是全局唯一的。 因此,为了避免冲突,有一个在类名前加前缀的约定。 这就是为什么我们在Foundation Framework中为类提供了‘NS’前缀,在UIKit中为类提供了‘UI’前缀。
  2. 显式指针。
  3. 在nil对象上发送消息而不会崩溃的能力以及缺乏严格的键入导致了难以跟踪和修复的错误。
  4. 该语言在语法上冗长而复杂,但是鉴于它是一种相当古老的语言,因此可以预期。

Swift是一种于2014年发布的年轻语言。它采用现代语法和功能,旨在确保安全性和高性能。 Swift于2015年12月开源。

Swift的比较优势:

  1. 由于使用静态类型以及使用可选对象和可选链接,因此Swift更安全。
  2. 支持名称空间,清晰的可变性语法,功能模式和简洁的语法。
  3. 使用Playgrounds进行交互式开发。
  4. 对于新程序员来说,Swift更容易学习。Apple的官方语言指南是一个很好的资源。
  5. Swift表现出色,正在服务器端应用程序中找到自己的位置。 克里斯·贝利Chris Bailey)在Realm Academy上的一次演讲中解释了在服务器端使用Swift的优势,他指出了Swift与服务器和云上其他框架相比的优势。 据他介绍,Swift性能卓越,内存占用量低,这使其成为服务器端开发的理想选择。
  6. Swift现已稳定,其ABI已锁定。
  7. Swift标准库代码包含约42.5%的Swift代码。 标准库中使用的不同语言的拆分如下图所示。 此Swift代码可能是开发人员可以用来改进自己的Swift编码的最佳Swift代码。 在本演讲中,它涵盖得很好。

Swift的比较缺点:

  1. 编译时间更长。
  2. 没有直接使用C ++库的方法。
  3. 模块格式的稳定性仍未实现,对于希望将其代码共享为二进制框架的开发人员而言,这是必需的。

结论

Swift现已正式成为ABI的稳定用户,可以被认为是一种成熟的语言。 Swift中的未来更新不会破坏从现在开始在Swift 5中编写的当前代码。

苹果提供了Objective-C和Swift之间的出色互操作性,并且不会在不久的将来放弃对Objective-C的支持。 对于团队来说,最好将其Objective-C代码的一部分迁移到Swift,因为它现在是ABI Stable。
如果您正在开发一个二进制框架,我建议您等待Swift实现模块格式稳定性。 另外,如果您要使用C ++和Objective-C ++代码库或框架,那么您将需要使用Objective-C和Swift。 Objective-C部分可以直接与代码的C ++或Objective-C ++部分交互,然后Swift部分可以使用Objective-C类与C ++或Objective-C ++代码进行交互。

对于是否应该迁移到Swift以及是否不迁移到此感到困惑,请参阅本文的详细介绍。

    Interesting Posts