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

时间:2016-01-25 17:28:17

标签: ios swift module llvm-clang bridging-header

关于“动态框架”目标,我需要将内部(私有)objective-c标头桥接到我的swift对应方。

根据我的理解,我需要使用私人模块。

使用@objc class TheClass语法将这些快速对应物中的一些桥接回到objective-c。

我继续在module.modulemap下的目录中创建了module.private.modulemap$SRCROOT文件,并在构建设置中添加了“必要”标记。

SWIFT_INCLUDE_PATHS =>$(SRCROOT)/...

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

我的模块地图文件是:

module InnerModule {
    export *
}

,私有模块文件是:

explicit module InnerModule.Private {
    header "../Classes/Header1.h"
    header "../Classes/Header2.h"
    ...
    export * // and have tried without it
}

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

import InnerModule.Private

现在,在构建项目时,我的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

如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

事实证明,在编译框架之后,您可以转到框架标题,删除所有&#34; private&#34;你不想公开的标题。

之后,您可以删除您不希望从&#34;标题&#34;中删除的所有标题文件。 。目录

按预期工作