Ios 在动态框架中,将目标C和Swift与实现目标协议的Swift类混合匹配,但找不到定义

Ios 在动态框架中,将目标C和Swift与实现目标协议的Swift类混合匹配,但找不到定义,ios,objective-c,swift,xcode,cocoapods,Ios,Objective C,Swift,Xcode,Cocoapods,这是我们的设置。我们有一个Pod,即带有Objective C和Swift类的动态框架,在大多数情况下运行良好,但最近我们有一个“Swift类”实现了“ObjcProtocol”。我们需要在目标C代码中使用这个“SwiftClass”。因此,当生成“MixAndMatchFramework Swift.h”时,它有“SwiftClass”的定义,但它没有“ObjcProtocol”的定义,因为它不能在“MixAndMatchFramework Swift.h”中重新定义,这将是一个重复的定义。现

这是我们的设置。我们有一个Pod,即带有Objective C和Swift类的动态框架,在大多数情况下运行良好,但最近我们有一个“Swift类”实现了“ObjcProtocol”。我们需要在目标C代码中使用这个“SwiftClass”。因此,当生成“MixAndMatchFramework Swift.h”时,它有“SwiftClass”的定义,但它没有“ObjcProtocol”的定义,因为它不能在“MixAndMatchFramework Swift.h”中重新定义,这将是一个重复的定义。现在我们要做的是包含一个头,但是头像“”一样不存在。现在,我尝试手动添加具有完全相同名称的头,并将头导入包含到“ObjcProtocol”定义中,但随后它给出了20个其他错误。即使该协议的内容只需要UIKIT和基金会。 现在,这20个左右的错误报告头找不到等非常类似的错误,我们得到了当我们最初开始混合和匹配,似乎与自动生成的伞头CocoaPods。我们通过在xcconfig中指定一个自定义modulemap来修复这个问题,该自定义modulemap具有指向手动添加的伞形头的显式路径(它只有Swift中使用的目标C类的导入),并修复了这个问题。但上述情况再次暴露了错误

我们正在使用Xcode 8.2.1和最新的Swift 3.X以及Cocoapads 1.1
任何接受者…

设置
使用标题映射
为我解决了这个问题

当我去年遇到这个问题时,我制作了一个示例应用程序,试图重现这个问题,这样我就可以向苹果公司提交一个雷达漏洞。在这样做的过程中,我确定在构建设置中启用
Use Header Maps
,是这是否正常工作的关键

我从未向苹果提交过bug,因为它看起来像一个边缘案例(在新创建的项目中,默认情况下,这个值是
Yes
,在我们的项目中,它是关闭的,因为它是一个旧的代码库)

更新:当
头搜索路径错误时,或者当
构建阶段的头文件引用出错时,我也遇到了类似的问题