在导入Swift头的bridging-header中导入一个文件

我不断遇到一个错误,告诉我Xcode无法导入桥接头。 我注意到这只发生在我导入一个导入我的Swift头的特定类(ProjectName-swift.h)时。

是否有可能导入一个导入Swift头的类? 如果不是的话,我该如何使用在我的Swift类中导入Swift头的类,同时仍然可以使用我需要的Swift代码?

将Swift头文件从你的类的头文件移动到该类的实现文件中,并使用@class做一个Swift类的前向声明。

例如,如果您需要为名为MySwiftClass的Swift类导入Swift头,那么在头文件中的@interface之前,放入以下行:

 @class MySwiftClass; 

这将允许您的头文件直接导入Swift头文件。 您的实现仍然需要它,所以这就是为什么导入语句应该被移动到实现文件。

如果你正在尝试转发声明是一个协议,也可以做同样的事情。 您只需使用@protocol关键字。

即使只使用Objective-C代码,使用类或协议的前向声明也是打破循环依赖的Objective-C方式。 有时甚至有必要对同一个头文件中定义的类或协议使用前向声明,例如,如果您有一个协议和类都相互引用。