iOS混合动态框架 - 将objc标头与私有模块桥接

Avn*_*arr 6 module llvm-clang ios swift bridging-header

关于"动态框架"目标,我需要将内部(私有)objective-c标头桥接到我的swift同行.

根据我的理解,我需要使用私有模块.

其中一些快速的对应物使用@objc class TheClass语法桥接回objective-c .

我已经继续在目录下创建了一个module.modulemap和一个module.private.modulemap文件,$SRCROOT并在构建设置中添加了"必要"标志.

SWIFT_INCLUDE_PATHS =>$(SRCROOT)/...
Run Code Online (Sandbox Code Playgroud)

我还尝试在构建设置中添加"私有模块映射文件"

我的模块映射文件是:

module InnerModule {
    export *
}
Run Code Online (Sandbox Code Playgroud)

和私有模块文件是:

explicit module InnerModule.Private {
    header "../Classes/Header1.h"
    header "../Classes/Header2.h"
    ...
    export * // and have tried without it
}
Run Code Online (Sandbox Code Playgroud)

在我添加的所有相关Swift文件中

import InnerModule.Private
Run Code Online (Sandbox Code Playgroud)

现在,在构建项目时,我的swift桥头中出现错误

#import <MyFramework/MyFramework-Swift.h> // getting an error here

MyFramework-Swift.h // generated header file
@import UIKit;
@import ObjectiveC;
@import InnerModule.Private; Module InnerModule not found
Run Code Online (Sandbox Code Playgroud)

怎么解决这个问题?

Avn*_*arr 1

事实证明,编译框架后,您可以转到框架标头,删除所有不想公开的“私有”标头。

之后,您可以从“Headers”目录中删除所有不想公开的头文件。

按预期工作