Objective C接口生成的头文件不能导入其他头文件

Posted

技术标签:

【中文标题】Objective C接口生成的头文件不能导入其他头文件【英文标题】:Objective C interface generated header can't be imported in other header 【发布时间】:2016-05-27 16:03:04 【问题描述】:

我不是 Obj C 专业人士,但我应该用 Objective C 编写一些代码并将 Swift 代码桥接到它。 我成功将 Generated Header 导入到 .m 文件中:

#import "<my_module>-Swift.h"

但是当我尝试将相同的标头导入 .h 文件时,它会引发此错误:

顺便说一句,我只想将一个从 Swift 类实例化到特定 obj c 类的公共变量添加。我试图将这些行放在 .h 和 .m 文件中:

@property (nonatomic, readwrite, strong) Card *card;

我该怎么办?

【问题讨论】:

@class Card;. 【参考方案1】:

在您的情况下,由于您需要做的只是声明Card* 类型的属性,因此您实际上不需要导入标头 - 您只需 forward-declare@class Card;使用前。

【讨论】:

【参考方案2】:

如果你想在 Objective-C 头文件中引用 Swift 类,你不能 #import *-Swift.h 文件,而是应该使用 https://developer.apple.com/library/ios/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.html 中描述的前向声明,请参阅标题为引用 Swift 的部分Objective-C 标头中的类或协议。这基本上是@jtbandes 在评论中所建议的。

这里有个问题:你想在 Objective-C 中使用的 Swift 类必须直接或间接地扩展 NSObject 类。

【讨论】:

以上是关于Objective C接口生成的头文件不能导入其他头文件的主要内容,如果未能解决你的问题,请参考以下文章

Object-C基础结构

在类的头文件里尽量少引入其它头文件 &lt;&lt;Effective Objective-C&gt;&gt;

如何在 C 中为静态库设计接口

为啥 Objective-C 中的头文件顶部有 import 和 class 语句?

Objective C框架不能导出一些类

将swift文件导入objective-c项目