繁体   English   中英

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

[英]Mix and match in dynamic framework Objective C and Swift with a Swift class implementing a Objective Protocol but cant find the definition

这是我们的设置。 我们有一个Pod,即一个带有Objective C和Swift Classes的动态框架,在大多数情况下工作正常,但最近我们有一个实现“ObjcProtocol”的“SwiftClass”。 我们需要在Objective C代码中使用这个“SwiftClass”。 因此,当生成“MixAndMatchFramework-Swift.h”时,它具有“SwiftClass”的定义,但它没有“ObjcProtocol”的定义,因为它不能在“MixAndMatchFramework-Swift.h”中重新定义,这将是一个重复定义。 现在尝试做的是包括标题,但标题不存在,如“<”MixAndMatchFramework / MixAndMatchFramework.h“>”。 现在我尝试手动添加具有完全相同名称的标头,并将标头导入包含在“ObjcProtocol”定义中,但随后它会产生20个其他错误。 即使该协议的内容仅需要UIKit和Foundation。

现在这些20个左右的错误报告标题未找到等与我们最初开始混合和匹配时出现的错误非常相似,并且似乎与CocoaPods的自动生成的伞标题相关。 我们通过在xcconfig中指定自定义模块映射来修复该特定问题,其中包含我们手动添加的伞标题的显式路径(其中仅包含Swift中使用的Objective C类的导入)并修复了该问题。 但是,上述情况再次重现了这些错误

我们正在使用Xcode 8.2.1与最新的Swift 3.X和Cocoapads 1.1任何人......

将“ Use Header Maps Yes设置为“ Yes解决此问题。

当我去年遇到这个问题时,我做了一个示例应用程序试图重现这个问题,所以我可以向Apple提出雷达错误。 在这样做的过程中,我确定在构建设置中启用“ Use Header Maps ”是这是否正常工作的关键。

我从来没有向Apple提交过一个错误,因为它似乎是一个边缘情况(默认情况下,这个值在新创建的项目中为Yes ...因为它是一个旧的代码库,所以我们已经关闭它了)。

更新:当Header Search Paths错误或Build Phases的标题的文件引用搞砸了时,我也遇到了类似的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM