XCode6:接收错误“在框架模块中包含非模块化头”

时间:2015-02-17 00:03:09

标签: xcode xcode6 clang ios-frameworks

我有一个iOS应用程序,包括一个应用程序,一堆我的自定义框架,以及一堆第三方framweorks:

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 的行中出现“在框架模块中包含非模块化标头”

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

这个问题已经解决here,但它不是特定于Swift的。

建议有(1)确保所有自定义框架标头都是公共的。他们是。 (2)转到“目标”下的“构建设置”,并将“允许框架模块中的非模块化包含”设置为YES

有谁知道为什么会发生这种情况以及如何解决这个问题?将“允许非模块化包含在框架模块中”设置为“YES”是否为良好做法?为什么这是一个错误?

感谢。

1 个答案:

答案 0 :(得分:15)

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

enter image description here