一尘不染

如何在Swift框架中导入私有框架头?

swift

我有一个Objective-
C框架(框架A),该框架公开了一些公共和私有标头。公共头文件也在框架的伞头文件中声明。我有第二个Swift框架(框架B),它与Objective-
C框架链接。

现在,如果要在BI中导入A的公共标头,只需要做一个即可import A

但是,如何导入私有标头呢?

我知道桥接头不是一个选择,因为框架不支持该头。我是否需要以某种方式为专用标头创建一个单独的伞形标头?


阅读 297

收藏
2020-07-07

共1个答案

一尘不染

您需要修改framework A,以便它导出私有模块。

  1. 在项目中创建一个私有模块映射文件A。这将是这样的:

A / private.modulemap

    explicit module A.Private {

    // Here is the list of your private headers.
    header "Private1.h"
    header "Private2.h"

    export *
}
  1. 在框架A目标的“构建设置”中,搜索“专用模块映射文件”行,并进行以下操作:

    $(SRCROOT)/A/private.modulemap
    
  2. 不要private.modulemap在“编译源”中包含文件。这会导致不必要的警告。

  3. 清理并构建框架A目标。

  4. 在框架B中,Swift文件。您可以这样导入私有模块:

    import A
    

    import A.Private

2020-07-07