这可以通过Project-Swift.h
在实现.m
文件中包含头文件而不是头文件来解决,并在头文件中使用前向声明,@class SomeClass
例如@protocol SomeProtocol
.
Objective-C
当您有两个相互依赖的类时,该解决方案与该解决方案相同。
例如,给定以下头文件:
#import "Project-Swift.h"
@interface MyObjcClass: NSObject
@property SomeSwiftClass *aProperty;
@property id<SomeSwiftProtocol> delegate;
和这样的.m
文件
#import "MyObjClass.h"
@implementation MyObjcClass
...
,您需要将 .m 文件移动#import "Project-Swift.h"
到 .m 文件中,并像这样更新您的头文件:
@class SomeSwiftClass;
@protocol SomeSwiftProtocol;
@interface MyObjcClass: NSObject
@property SomeSwiftClass *aProperty;
@property id<SomeSwiftProtocol> delegate;
@end
和这样的.m
文件:
#import "Project-Swift.h"
#import "MyObjClass.h"
@implementation MyObjcClass
...
请注意,如果objective-c 类被声明为实现Swift 声明的协议之一,则您可能需要将“Project-Swift.h”导入放在您的类头导入之前。