我有一个XCWorkspace,其中包含单独的框架项目,项目结构如下
AFramework项目(静态框架项目,AFramework项目链接BFramework并将其添加到其目标依赖项中)
BFramework项目(静态框架项目,包含公共BClass.swift文件)
AFramework项目可以按预期访问BClass.swift文件,但我还想将BClass.swift文件公开到AFramework的外部,假设一个应用程序项目仅链接AFramework,并且在该应用程序上我想访问BClass.swift文件,使用自定义模块映射可能会有用吗?
这是演示应用程序的屏幕截图,该应用程序仅链接AFramework并尝试访问BClass.swift文件,但该文件不可访问。
提前感谢您的帮助
答案 0 :(得分:2)
最后,我找到了答案。为了能够公开子模块的公共api,可以使用@_explored import属性。
对于我在AClass.swift文件上使用“ @_exported import BFramework”的情况,这导致BFramework的公共api也可以从仅链接AFramework的应用程序侧访问。
请注意,它尚未正式发布。
答案 1 :(得分:0)
我认为您要么将B框架添加为依赖项,要么在A框架上创建一个类,以暴露所需的功能。
答案 2 :(得分:0)
您应该只能像这样导入BClass
import class BFramework.BClass
只要框架中的类是公共的,那就应该起作用。这对于func,var,protocol,struct和enum(例如import struct BFramework.BStruct
)也应该起作用