使Swift OSS库与Objective-C兼容

Guy*_*her 5 objective-c ios swift

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

我已经检查了这个答案,建议在Objective-C中编写库,但是给我的要求是在Swift中编写库.我以源代码形式提供库,因此在我的情况下不应该适用那些关于不稳定ABI的论点(反对在Swift中编写库).

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

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

所以我的两个问题是:

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

我很感激这里的所有帮助.

zpa*_*ack 5

Objective-C中没有提供的最全面的Swift功能列表在Apple的使用Swift with Cocoa和Objective-C指南Swift类型兼容性部分中.

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

  • 泛型
  • 元组
  • 在没有Int原始值类型的Swift中定义的枚举
  • Swift中定义的结构
  • Swift中定义的顶级函数
  • Swift中定义的全局变量
  • 在Swift中定义的Typealiases
  • Swift风格的可变参数
  • 嵌套类型
  • 咖喱功能

整个导向是值得一读,但我会特别注意的混合和匹配部分,其描述了Objective-C和反之亦然,包括外部框架调用雨燕.

我肯定会建议做@Mike Taverne建议:在Objective-C中进行一系列单元测试,它们运用你在Swift中开发的API.这是确保一切按预期工作的最佳方式.