在Objective C头文件中访问Swift类

8
我一直在很好地混合使用Swift和Objective C,但我在从Objective C的HEADER文件中访问Swift类时遇到了问题。在.m文件中可以成功地执行此操作。
在.h文件中,我导入具有格式"Appname-Swift.h"的Xcode生成文件。然而,在这样做时,我会得到文件未找到的消息。在我的.m文件中,我可以进行同样的导入而没有任何问题。然而,我需要在.h文件中,因为我引用Swift类并需要使用公共API访问它。
我如何从Objective C的.h部分使用Swift类?
示例:
#import <UIKit/UIKit.h>
#import "MyApp-Swift.h"

@interface SelectedContactsVC : UIViewController

@property (nonatomic,strong) MapVC *mapVC;

@end

上面的MapVC是一个Swift类。

1个回答

17

#import "MyApp-Swift.h"移到.m文件中。

同时将.h文件修改为:

#import <UIKit/UIKit.h>
@class MapVC;

@interface SelectedContactsVC : UIViewController

@property (nonatomic,strong) MapVC *mapVC;

@end

如果从Objective-C头文件中导入Swift,则Swift无法生成"MyApp-Swift.h"。可能存在相互依赖的问题。


谢谢,这个可行!这样添加"@class"有点像前向声明吗? - C6Silver
3
是的,它会告诉编译器这个符号实际上是一个类,但不提供其他信息。在大多数情况下,这已经足够有用了,可以避免相互依赖的问题。 - OOPer
太棒了!正是我在寻找的。谢谢! - CalZone

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接