现在是切换到 Swift 的时机吗?

在回答这个问题之前,先简单回顾一下 Swift 的发展状况。

时间回到 2014 年 6 月,那时 Swift 刚刚发布。新生事物通常是不成熟的,大部分开发者对它持谨慎态度。接下来一年,Apple 对 Swift 做了许多改进。不仅显著提升了性能,还增加了一些非常重要的语言特性,例如 Error Handling、Protocol Extension 等。紧接着,Apple 在 2015 年 8 月发布了 Swift 2,并于同年将其开源。2016 年,Swift 延续了如火如荼的发展态势,Apple 计划在今年秋季发布 Swift 3 稳定版。就在写这篇文章的时候,Swift 3 的演变已经达到了最后阶段,一切都在良好有序地进行着。

可以看出,Apple 对 Swift 非常用心。当然,除了 Apple 的投入,社区也参与了许多贡献。例如,在 Swift Evolution 中,有许多草案都是社区提交的。

从 Objective-C 切换到 Swift 有哪些优缺点呢?

先说优点吧。我能想到的优点主要有三个:

  • 类型安全。许多错误可以提前在编译时发现。
  • 语言特性丰富。Swift 吸收了很多语言的特性,例如 Optional、模式匹配等。
  • 表达能力强。Swift 不仅语法更加精炼和现代,还提供了诸如 guard 之类的特性。这让代码更具可读性。

对一个刚诞生不久的语言来说,它的缺点显而易见:

  • 开源社区有待积累。有时可能还需要依赖 Objective-C 的库。
  • 语法和 ABI 尚不稳定。未来 Swift 可能还会产生语法上的不兼容。另外,原定在 Swift 3 中实现 ABI 稳定的计划被推迟了,这意味着 Swift 对 library 或 framework 的支持还不够好。

不过 Swift 和 Objective-C 可以相互操作,在 Xcode 中,我们可以毫不费力地把它们桥接起来。因此,如果没有发布 library 或 framework 的需要,语法和 ABI 的不稳定不应该成为切换到 Swift 的阻碍。

最近我也看到有越来越多的公司开始拥抱 Swift 了,其中不乏像 Facebook 这样的大公司。Facebook 前不久发布的 Swift SDK 虽然只是 Objective-C SDK 的 wrapper,但这也标志着 Swift 日趋成熟,是时候可以委以重任了。LeanCloud 也跟随浪潮,发布了 Swift SDK

最后,我认为现在就是切换到 Swift 的绝佳时机。虽然 Swift 距离稳定还有一段路要走,但是「Swift is not dead」。