我正在做一个使用Objective-C开发的iOS项目。我需要在其中集成一些Swift文件。所以,做了以下事情:
1.添加了一个名为“temp”的新Swift文件,因此MyProject-Bridging-Header.h
是由我的Xcode IDE(版本9.1)添加的。
1.将我想要使用的Swift文件添加到项目中。
1.将目标设置Defines Module
更改为YES。
1.类似地,Product Module Name
被设置为“MyProject”。
1.我可以看到设置“Objective-C Generated Interface Header Name”的MyProject-swift.h
文件名。
1.在我的一个Objective-C .m文件中添加了MyProject-swift.h
的import语句**,并且能够成功构建项目。**
1.我在Finder中检查了MyProject-swift.h
被创建。
1.确保Swift类声明中的@obj前缀。
尽管如此,当我尝试使用任何Swift类时,我会得到编译时错误“User of undeclared identifier”。
问题的原因是什么?我是否遗漏了什么?
[update Xcode 14]默认情况下,PRODUCT_MODULE_NAME
设置为XXX-Swift.h
〈Swift,大写为S。
2条答案
按热度按时间quhf5bfb1#
想明白了...
我在Objective-C类中缺少Swift类的 *forward声明 *。我所需要做的就是在
.h
文件中的接口声明之前添加以下语句。一旦添加了语句,它就成功构建了。
owfi6suc2#
[Xcode 14更新]
让Swift类暴露给Objective-C
流程:
1.从
NSObject
继承类1.给予属性
@objcMembers
直接赋予Swift类,或选择性地将@objc
赋予预期的类成员。1.在要使用Swift类的ObjC类的标头中,添加Swift类声明
@class SwiftClassXXX;
1.相应地,在你想要使用Swift类的ObjC类的
.m
文件中,#import一个编译器会自动生成的头文件。如果你的项目名为MyProject
,自动头文件将是MyProject-Swift.h
(S
大写)。1.在
.m
中使用Swift类您可以更改或检查
MyProject-Swift.h
自动头文件名,在构建设置中检查PRODUCT_MODULE_NAME
-并根据需要更改它。