【问题标题】:XCode6: Receiving error "Include of non-modular header inside framework module"XCode6:收到错误“在框架模块中包含非模块化标头”
【发布时间】:2015-04-17 14:49:18
【问题描述】:

我有一个 iOS 应用,它由一个应用、一堆我的自定义框架和一堆第三方框架组成:

App
    MyFramework1
    MyFramework2
        AFNetworking.framework
        Mantle.framework
        ..

我收到错误“在框架模块中包含非模块化标头”,其结构如下:

App/AppDelegate.m
#import <MyFramework2/MyFramework2.h>

MyFramework2/MyFramework2.h
#import "MyClass.h"

MyClass.h
#import <Mantle/Mantle.h>        <-- Error happens here

MyFramework2 自行构建。

尝试构建 App 失败,并在导入 Mantle.h 的行出现错误“Include of non-modular header inside framework module”。

如果我在 .m 文件中导入 Mantle.h,这个问题就会消失,但我不能这样做,因为我的类继承自在 Mantle 中定义的 MTLModel。

here 已解决此问题,但它不是 Swift 特有的。

建议 (1) 确保所有自定义框架标题都是公开的。他们是。 (2) 进入“Target”下的Build Settings,将“Allow Non-modular Includes in Framework Modules”设置为YES。

有谁知道为什么会发生这种情况以及如何解决它?将“允许框架模块中的非模块化包含”设置为“是”是否被认为是一种好习惯?为什么这是一个错误?

谢谢。

【问题讨论】:

    标签: xcode xcode6 clang ios-frameworks


    【解决方案1】:

    在项目导航器中选择 .h 文件。在右侧的目标会员区域中,目标旁边有一个下拉菜单。在那里选择“public”(现在可能选择了“project”)。

    【讨论】:

    • 请注意,即使您打开了“允许框架模块中的非模块化包含”的 CLANG 设置,这也是一个问题,您的答案可以解决。谢谢。
    • @Nikos M. 你能添加截图吗?我看不到那个下拉菜单。请帮忙。非常感谢
    • 目标会员的下拉菜单在哪里?
    • @lenhhoxung 这不是下拉菜单。它位于带有属性的右侧边栏中。
    • @NikosM。谢谢,但它不适用于我,因为头文件是通过 cocoapods 安装的
    猜你喜欢
    • 2016-11-20
    • 1970-01-01
    • 1970-01-01
    • 2018-10-23
    • 2017-07-08
    • 2016-02-08
    • 2018-12-07
    相关资源
    最近更新 更多