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接口生成的头文件不能导入其他头文件的主要内容,如果未能解决你的问题,请参考以下文章
在类的头文件里尽量少引入其它头文件 <<Effective Objective-C>>