0

所以,问题照常进行。我有一个文件,其中包含:

#import "Project-Swift.h"

我想将此文件添加到我的 BridgingHeader 中。所以当我尝试编译它时,错误如下:

'Project/Project-Swift.h' file not found
#import "Project-Swift.h"
        ^
<unknown>:0: error: failed to import bridging header 'path/to/my/folder/Project/BridgingHeader.h'

我无法#import "Project-Swift.h"从这个 .h 文件中删除,因为那里需要它。而且我还想在 Swift 中使用这个 Objc 文件。有什么选择?

4

1 回答 1

1

这可以通过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”导入放在您的类头导入之前。

于 2016-01-21T18:23:20.137 回答