我试图创建一个封装了一组功能的iOS swift框架,其中一些功能需要包装一个c / objective-c静态库。我需要在框架内调用objective-c包装器函数 - 我最好理解(基于如何在框架目标中混合和匹配objc和swift的文档:https://developer.apple.com/library/ios/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.html),我必须导入目标我的伞头中的-c header(s)将objective-c暴露给框架内的swift代码。这也将objective-c包装器暴露给我的框架的任何使用者。我怎么能避免这样做?我希望能够在我的框架中从swift代码调用objective-c包装器函数,但不要将包装器本身暴露给任何框架消费者......
答案 0 :(得分:0)
刚刚用答案更新了这个问题 - 我在WWDC向苹果工程师询问了这个问题。正是我想要的是swift无法实现的。
在我的情况下,我想在我的swift框架中调用的objective-c api非常小,所以它足以创建一个小的(私有)swift类,它使用运行时调度(performSelector)来调用适当的方法在转换为AnyObject之后。这需要手动维护一个swift选择器定义,该定义复制objective-c头文件中的每个方法声明 - 但对于非常小的约束场景,这不是 坏(即使它不是理想的)。