簡體   English   中英

如果包含Project-Swift.h的導入,如何將Objective-C文件導入橋接頭

[英]How to import Objective-C file to bridging header if it contains an import of Project-Swift.h

因此,問題依舊。 我有一個包含以下內容的文件:

#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頭,以及在頭中使用前向聲明(例如@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
...

請注意,如果為實現Swift聲明的協議之一而聲明了objective-c類,則可能需要將“ Project-Swift.h”導入放在類標頭導入之前。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM