所以,问题照原样进行。我有一个包含以下内容的文件:
#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'
我无法从这个 .h 文件中删除 #import "Project-Swift.h"
,因为那里需要它。而且我还想在 Swift 中使用这个 Objc 文件。有哪些选择?
最佳答案
这可以通过在实现 .m
文件中包含 Project-Swift.h
header 而不是 header 文件,并在 header 中使用前向声明来解决,例如@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
...
,您需要将 #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 声明的协议(protocol)之一,您可能需要将“Project-Swift.h”导入放在类头导入之前。
关于ios - 如果 Objective-C 文件包含 Project-Swift.h 的导入,如何将其导入到桥接 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34931301/