ios - 使 Swift OSS 库与 Objective-C 兼容

标签 ios objective-c swift

我正在用 Swift 构建一个库,它必须支持 Objective-C。

我已经查过了this answer建议用 Objective-C 编写库,但给我的要求是用 Swift 编写库。我以源代码形式提供库,因此那里关于不稳定 ABI 的论点(反对用 Swift 编写库)不应该适用于我的情况。

所以我听说,为了让这个 Swift 库适用于 Objective-C,我将不得不避免使用 Swift 中的高级功能,而这些功能在 Objective-C 中不可用。这些例子是:

  • 泛型
  • 结构
  • 所有 Swift 类都必须派生自 NSObject

所以我的两个问题是:

  1. 我在哪里可以找到这些限制的详尽列表?
  2. 如何快速测试我的库是否与 Objective-C 兼容?我对 Swift 和 Objective-C 的互操作性主题一点都不熟悉。我在网上找不到的文章不多。 Apple 官方文档是否足够?哪些部分可以提供帮助?

非常感谢这里的所有帮助。

最佳答案

最全面的 Objective-C 不可用的 Swift 特性列表在 Swift Type Compatibility 中。苹果的一段Using Swift with Cocoa and Objective-C guide .

引用自那里,排除列表如下:

  • 泛型
  • 元组
  • 在 Swift 中定义的没有 Int 原始值的枚举 输入
  • Swift 中定义的结构
  • Swift 中定义的顶级函数
  • Swift 中定义的全局变量
  • Swift 中定义的类型别名
  • Swift 风格的可变参数
  • 嵌套类型
  • 柯里化(Currying)函数

whole guide值得一读,但我会特别注意 Mix and Match section它描述了从 Objective-C 调用 Swift,反之亦然,包括外部框架。

我肯定会建议按照@Mike Taverne 的建议去做:在 Objective-C 中制作一套单元测试,以测试您在 Swift 中开发的 API。这是确保一切按预期工作的最佳方式。

关于ios - 使 Swift OSS 库与 Objective-C 兼容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42401912/

相关文章:

ios - NativeScript,将声音与在后台播放的其他应用混合

ios - 在不丢失导航栏的情况下呈现第二个 View Controller

iphone - 消息发送到已释放的实例

objective-c - NSWIndowController 创建 Nib 加载的 Outlets 序列

ios - 将iOS原生相机应用借用到我自己的应用中

ios - 在 Swift 中获取可见的 IndexPath UICollectionView

ios - 以编程方式切换选项卡无法正常工作

android - 找不到图像的相对/本地目录 - React Native

ios - UIImageView 上的点击手势

swift - 如何在 Swift 中结合 NavigationController 的两个 ViewController 之间切换