我可以/应该有多个 Objective-C 桥接头吗?

Posted

技术标签:

【中文标题】我可以/应该有多个 Objective-C 桥接头吗?【英文标题】:Can/Should I have more than one Objective-C bridging header? 【发布时间】:2017-05-10 15:24:00 【问题描述】:

我正在尝试在我的应用中实现一些新的 Siri 集成。我有一个旧的 Objective-C 标头,我一直在整个项目中使用它,但现在这个新的 Siri Intents 目标也需要一个标头。所以现在我有两个objective-c 桥接头,一个用于主项目及其目标,另一个用于Siri Intents 目标。

它没有像我预期的那样工作。我收到“未解决的标识符使用”错误,指的是我尝试导入的一个 Objective-C 类。

在我的构建设置中:

项目:主桥接头目录 目标: selfTitledTarget:主桥接头目录 SiriIntent:新桥接头目录

为了安全起见,我的主要桥接头包含新桥接头的所有导入。

在开始新的 Siri 实施之前,我没有遇到这个问题。我有另一个项目,它只有 Siri 实现并且工作正常,所以我猜我的问题根源在于我有多个桥接头?

【问题讨论】:

【参考方案1】:

项目:主桥接头目录

目标:

selfTitledTarget:主桥接头目录

SiriIntent:新桥接头目录

这没有任何意义。项目没有桥接头;目标做。而且它们的桥接头构建设置不是目录;它们是文件。

因此,第一步是确保您只有两个桥接头,每个目标一个。

之后,我建议在两个桥接头中导入所有 Objective-C .h 文件。它不会有伤害,它应该可以解决你的问题。

【讨论】:

【参考方案2】:

这不是标题:每个目标一个桥接标题正是它应该如何工作的。

问题是引用的类没有被编译到意图目标中。检查文件检查器 (⌘⌥1) 中的目标成员资格窗格,并将共享源文件设置为包含在需要它们的所有目标中。

【讨论】:

以上是关于我可以/应该有多个 Objective-C 桥接头吗?的主要内容,如果未能解决你的问题,请参考以下文章

Objective-C Swift 桥接头

Objective-C Swift 桥接头

我可以使用桥接头在基于 Swift 的项目中导入 Objective-C++ 类吗?

Objective-C++ 和 Swift - 桥接头中的嵌套结构

Firebase桥接头不起作用

桥接头文件找不到导入的 Objective-C 项目