我正在尝试创建一个封装了一组功能的 iOS swift 框架,其中一些功能需要包装一个 c/objective-c 静态库。我需要从框架内调用 objective-c 包装函数——据我所知(基于关于如何在框架目标内混合和匹配 objc 和 swift 的文档:https://developer.apple.com/library/ios/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.html),我必须导入 objective-c我的伞形 header 中的 header 将 objective-c 暴露给框架内的 swift 代码。这也将 objective-c 包装器暴露给我的框架的任何消费者。我怎样才能避免这样做?我希望能够从我的框架内的 swift 代码调用 objective-c 包装器函数,但不将包装器本身暴露给任何框架使用者......
最佳答案
只是用一个答案来更新这个——我在 WWDC 上问过苹果的一位工程师这个问题。 swift 无法实现我想要的效果。
在我的例子中,我希望从我的 swift 框架中调用的 objective-c api 非常小,所以创建一个使用运行时分派(dispatch) (performSelector) 调用适当方法的小型(私有(private))swift 类就足够了转换到 AnyObject 之后。这需要手动维护一个 swift 选择器定义,该定义复制 objective-c 头文件中的每个方法声明——但对于非常小的受限场景,这不是那坏的(即使它不是理想的).
关于objective-c - 内部使用 objective-c 代码的 Swift 2.1 框架(但不重新导出 objective-c,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34849711/