【问题标题】:Include of non-modular header when including third party framework in Objective C在 Objective C 中包含第三方框架时包含非模块化标头
【发布时间】:2018-05-14 23:31:11
【问题描述】:

我需要在我的头文件中公开一个方法来接受来自第三方框架的类型的参数。方法存根如下所示:

- (void) onComplete:(RETURN_CODE (^)(BOOL isSuccess, NSData* tags))onComplete;

RETURN_CODE 是第三方框架中的 typedef 枚举,但不是典型的枚举定义。它看起来像这样:

typedef enum {
    RETURN_CODE_DO_SUCCESS = 0,              
    RETURN_CODE_ERR_DISCONNECT = 0xFF01,         
    RETURN_CODE_ERR_CMD_RESPONSE = 0xFF02,
    // continued...
}

当我尝试在我的头文件中导入它时,我收到错误“在框架模块中包含非模块化头”

在使用协议和类之前,我已经解决了这个问题,但我不确定如何解决 RETURN_CODE 类型的问题。我已经将“允许非模块化包含”选项设置为是。我的框架和第三方框架都包含在我的 swift 项目的桥接头中。

我的框架结构是这样的,A.h 导入 C.h,A.m 导入 B.h,B.h 导入 C.h。我不认为这应该是个问题?

由于我要导入的是第三方框架,我不确定是否可以更改它的目标成员资格。它已经包含在 Link Binary With Libraries 列表中。对于 lulz,我将其拖放到 Public headers 部分,但这并没有帮助。

我尝试制作一个模块映射文件,但这也没有改变任何东西。我不确定我是否正确创建了它,即使在删除桥接头后我也遇到了与以前相同的错误。

【问题讨论】:

    标签: objective-c include header-files


    【解决方案1】:

    选项1:转到头文件并将其更改为公共。

    选项 2: 转到项目 > 构建设置 > Apple LLVM 9.0 - 语言 - 模块 > 框架模块中的所有非模块化包含 = YES

    【讨论】:

      猜你喜欢
      • 2016-02-08
      • 2016-07-12
      • 1970-01-01
      • 2017-12-19
      • 2015-08-29
      • 2015-01-12
      • 2018-10-23
      相关资源
      最近更新 更多