Objective-C与Swift。

这就像老与新,青年与经验之战,父亲与儿子之战。 所有很酷的孩子似乎都喜欢Swift,并且对其周围的炒作非常庞大。 尽管像Crusty这样的年长者和经验丰富的人似乎忠于Objective-C。 那么谁是对的? 而且,更重要的是您应该怎么做?

我决定在一篇文章中汇总所有可用信息,因此无论您是经验丰富的开发人员还是iOS开发的全新人员,您都可以决定。 至少,您了解的越多越好。

初始信息

在WWDC 2006中引入了Objective-C 2.0,但它似乎已经存在了数十年。 最初的Objective-C于1984年首次出现,因此它已有32年的历史了! Objective-C是一种开源语言,主要用于Apple平台(macOS,iOS等)。

根据redmonk.com的研究,Objective-C是第十大最受欢迎的编程语言。 Github的这篇文章表明,2014年它是第9种语言,但在2015年不再排名前10位。

至于薪水,除了qz.com上的这张表,我什么都找不到。 但这真的过时了。

Swift是在WWDC 2014中引入的,在撰写本文时,该编程语言已经有了第3版。 它是开源语言,主要在Apple平台上使用。 由IBM积极传播。 据redmonk.com称,它现在是历史上第17种最受欢迎​​的编程语言,也是增长最快的语言。 所有新的代码示例都是用Swift编写的,大多数博客作者都使用它。

因此,您可能现在就想:“为什么我要浪费时间阅读本文-我绝对应该学习Swift!”。 我完全同意。 您应该学习它。 但是您应该在下一个项目中使用它吗? 您是否应该忽略Objective-C作为新的iOS开发人员? 让我们仔细看看。

目标C

我将重点关注使用Objective-C并学习它的利弊。

优点:

  • Objective-C是一种成熟的语言,具有庞大的社区,许多经验丰富的开发人员,最佳实践和编码风格。
  • 许多大型项目中都使用了许多经过良好测试的第三方库。 ( 注意:其中一些可能不会更新到最新的iOS版本
  • 有大量的旧代码需要得到支持。 (特别是对于Crusty)
  • 与其他语言的兼容性。 您可以在Objective-C文件内毫无问题地使用C或C ++。 如果需要在Swift代码中使用C ++,则应先将其包装在Objective-C代码中,然后再将其导入Swift中。

缺点:

  • 早晚Objective-C将无法支持某些新功能,因此将有仅Swift标记的方法和框架。
  • 它是一种过时的语言,缺少其他编程语言中提供的许多有价值的功能。 (看看Swift枚举和哭泣)

因此,基本上,如果您已经在Objective-C方面拥有丰富的经验,并且知道一些C / C ++,那么在接下来的5年或至少在苹果成为主要公司之前,您会做的很好。 永远有一个利基为您。

迅速

使用Swift的优点如下:

  • 现代的,更具表现力的,功能丰富的编程语言。
  • 非常活跃的社区。
  • 移植到其他平台
  • 快速应用新功能和建议(如果要为市场开发应用程序,这不是一件好事。即使在Xcode 8 Beta之间,也经历了痛苦的更改,需要您重写大量代码。 他们说你有一个迁移工具!

缺点:

  • 由于语言的快速发展,因此缺乏3-D方解决方案。 Github上有很多项目仍在Swift 1.2上。
  • 不成熟的社区和很多误导性建议

我在这里不会提到XCode仍然与Swift有关(通常它也有问题。您可以 在此处 阅读一些有趣的示例

最终裁决

安全使用-两者都要学习。 如果您是新开发人员,则仍应强烈考虑从Objective-C开始。 与Swift相比,Objective-C开发人员的工作仍然更多。 而且大多数Swift职位实际上是Swift / Objective-C。

如果您是一位经验丰富的开发人员,则应该学习Swift。 在Swift 4引入源代码和ABI稳定性之前,可能不需要在Swift中启动下一个项目。 但是您可能已经在Swift中编写了应用程序的某些部分。 它将增加您的应用程序的大小,并且会让人一团糟,但是毕竟,这是值得的。

因此,如果您有任何疑问,请在Twitter上与我联系Andrei Malyhin