XCode6: 接收错误"Include of non-modular header inside framework module"

XCode6: Receiving error "Include of non-modular header inside framework module"

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

App
    MyFramework1
    MyFramework2
        AFNetworking.framework
        Mantle.framework
        ..

我收到错误 "Include of non-modular header inside framework module",结构如下:

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,这个问题就会消失,但我不能这样做,因为我的 class 继承自 MTLModel,它是在地幔中定义。

此问题已得到解决 here,但尚未解决 Swift-specific。

有以下建议 (1) 确保所有自定义框架 headers 都是 public。他们是。并且 (2) 转到 "Target" 下的构建设置并将 "Allow Non-modular Includes in Framework Modules" 设置为 YES

有谁知道为什么会这样以及如何解决?将 "Allow Non-modular Includes in Framework Modules" 设置为 YES 是否被认为是一种好的做法?为什么这是一个错误?

谢谢。

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