XCode6:收到错误“在框架模块中包含非模块化标头”
Posted
技术标签:
【中文标题】XCode6:收到错误“在框架模块中包含非模块化标头”【英文标题】:XCode6: Receiving error "Include of non-modular header inside framework module" 【发布时间】: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
。
有谁知道为什么会发生这种情况以及如何解决它?将“允许框架模块中的非模块化包含”设置为“是”是否被认为是一种好习惯?为什么这是一个错误?
谢谢。
【问题讨论】:
【参考方案1】:在项目导航器中选择 .h 文件。在右侧的目标会员区域中,目标旁边有一个下拉菜单。在那里选择“public”(现在可能选择了“project”)。
【讨论】:
请注意,即使您打开了“允许框架模块中的非模块化包含”的 CLANG 设置,这也是一个问题,您的答案可以解决。谢谢。 @Nikos M. 你能添加截图吗?我看不到那个下拉菜单。请帮忙。非常感谢 目标会员的下拉菜单在哪里? @lenhhoxung 这不是下拉菜单。它位于带有属性的右侧边栏中。 @NikosM。谢谢,但它不适用于我,因为头文件是通过 cocoapods 安装的以上是关于XCode6:收到错误“在框架模块中包含非模块化标头”的主要内容,如果未能解决你的问题,请参考以下文章
XCode6 Beta 中的编译器警告 - “速记外部参数名称”
误删Images.xcassets后报错,objective-c和xcode6.4