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

时间:2016-04-05 18:37:17

标签: ios objective-c swift

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

是否可以导入导入Swift标头的类?如果没有,我如何使用在我的Swift类中导入Swift头的类,同时仍然可以使用文件中我需要的Swift代码?

1 个答案:

答案 0 :(得分:8)

将Swift标头导入从类的头文件移动到该类的实现文件,并使用@class进行Swift类的前向声明。

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

@class MySwiftClass;

这样就可以在不直接导入Swift头文件的情况下编译头文件。您的实现仍然需要它,因此导入语句应该移动到实现文件中。

如果您尝试转发声明的内容是协议,则可以这样做。您只需使用@protocol关键字。

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