我们目前有一个遗留的Objective-C框架,我们想将一些Swift组件引入其中。但是,我无法弄清楚如何从我们的Swift文件中访问私有和项目范围的Objective-C文件。
我们已经使用了一个伞形头和一个模块图文件来声明应该包含在库模块中的公共头文件,我们希望将它们保留为唯一公开的文件。但是,我们的新Swift文件(在同一框架内)还需要访问我们不想公开的私有标头。
我已经尝试定义一个私有模块映射文件,列出我想要使用的私有标头,然后使用MODULEMAP_PRIVATE_FILE构建设置指定它,但我不认为这样做我们想要的。它似乎引入了一个新的MyLibrary.Private模块,该模块对于外部目标(例如单元测试目标)是公开可见的,但仍然不能用于框架内的Swift文件。
任何关于如何实现这一目标的建议,或者在其他项目中做到这一点的经验都会有很大的意义。
谢谢!
答案 0 :(得分:0)
最近我遇到了完全相同的问题。情况是,您可以采用另一种方法来实现它,只需在内部将Swift暴露给Objective-C。通过一些手动工作,它将允许您在Swift内部(内部和在同一框架目标内)使用Objective-C类,而无需真正将ObjC暴露给Swift。
这种情况太复杂了,无法在此处粘贴所有内容。我正在向有关该主题的文章添加链接。这是一般的想法:
Creating Swift framework with private Objective-C members. The Good, the Bad, and the Ugly