objective-c - 内部使用 objective-c 代码的 Swift 2.1 框架(但不重新导出 objective-c

标签 objective-c swift frameworks swift2

我正在尝试创建一个封装了一组功能的 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/

相关文章:

ios - 在我的应用程序开始时使用 6 个图像为应用程序创建入门教程 - 停留在实际创建图像上

objective-c - 扩展坞显示或隐藏时的事件

ios - swift 中循环 ManagedObject 插入的语法

model-view-controller - 在 MVC 框架下,其他开发人员会期望哪种目录结构?

objective-c - 'application environment'、 'Framework'、 'API' 的定义

java - Java 日志记录框架的最新选项是什么?

objective-c - 核心数据迁移错误: Can't Copy

ios - 警报后执行 Segue

ios - 使用 parse.com 设置关注者列表的最佳方法是什么

ios - 用 NSAttributedString 替换 UITextView 选中的文本