我一直遇到错误,告诉我Xcode无法导入桥接头。我注意到这只发生在我导入一个导入我的Swift头的特定类(ProjectName-swift.h)时。
是否可以导入导入Swift标头的类?如果没有,我如何使用在我的Swift类中导入Swift头的类,同时仍然可以使用文件中我需要的Swift代码?
答案 0 :(得分:8)
将Swift标头导入从类的头文件移动到该类的实现文件,并使用@class
进行Swift类的前向声明。
例如,如果您需要为名为MySwiftClass
的Swift类导入Swift标头,那么在头文件中的@interface
之前,请输入以下行:
@class MySwiftClass;
这样就可以在不直接导入Swift头文件的情况下编译头文件。您的实现仍然需要它,因此导入语句应该移动到实现文件中。
如果您尝试转发声明的内容是协议,则可以这样做。您只需使用@protocol
关键字。
使用类或协议的前向声明是即使只使用Objective-C代码也可以打破循环依赖关系的Objective-C方法。有时,甚至有必要对同一头文件中定义的类或协议使用前向声明,例如,如果您有一个协议和类都相互引用。