Swift 框架或 Objective-c 库

Swift framework or Objective-c library

我们的团队将需要更新一个用 obj-c 编写并且过去已分发给其他 iOS 开发人员的库。我们正在评估是否应该在此更新中使用 Swift 框架。我们都期待使用 swift,但希望深入了解它的采用有多容易,因为我们的潜在开发人员可能会在他们的项目中使用 swift、obj-c 或混合。到我们完成更新时,我们计划仅支持 iOS8 及更高版本。非常感谢任何 insight/suggestions。

我有一个用 Objective-C 编写的 90K loc 库,它仍然基于 MRC(但与 ARC 兼容)。我花了一周时间对带有方法名称和注释(例如 __nullable)的头文件进行了细微调整,使代码库达到了可以在 Swift 中编写演示客户端程序的状态。演示程序看起来非常自然。集成相当无缝,只有 ARC 需要解决一些细微的问题。总之,我不一定要转换 现有的 框架并将 Objective-C 重写为 Swift。这两种语言完美地结合在一起,我们正在做相当复杂的设计,使用全套 OO 设计模式并广泛使用闭包(块)。 Swift 闭包被视为 Objective-C 块,一切都完美无缺。那是几百个 类 和几千个方法。

事实证明,添加 __nullable __nonnull 注释对于避免可选类型及其在整个过程中的显式取消引用很重要(很多类型以 ! 结尾!)。那是最大的变化。

不要改变正在工作的东西。您的框架对于 Swift 用户来说将是原生的。

至少,我建议审核 nullability 的现有库,因为这会产生一个更合乎逻辑的 Swift 接口到 Objective-C 框架。

我不建议仅仅为了移植到 Swift 而移植到 Swift,而是只有在有令人信服的优势时才建议移植。但是一个写得很好的 Objective-C 框架通常可以在 Swift 应用程序中很好地使用。