【问题标题】:iOS mixed dynamic framework - bridge objc headers with private moduleiOS 混合动态框架 - 将 objc 标头与私有模块桥接
【发布时间】:2016-05-02 02:45:15
【问题描述】:

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

据我了解,我需要使用私有模块。

其中一些 swift 对应物使用 @objc class TheClass 语法桥接到 Objective-c。

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

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

如何解决这个问题?

【问题讨论】:

  • 运气好能找到解决方案吗?
  • 不!在 LLDB 中尝试了很多不同的文档,但对我没有用。

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


【解决方案1】:

原来你编译框架后可以去框架头,删除所有你不想暴露的“私有”头。

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

按预期工作

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-15
    • 2014-09-10
    • 2019-12-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多