- 场景描述:在OC类的方法中,调用Swift类的方法,报错:No visible @interface for ‘CCC’ declares the selector ‘MMM’(CCC为类名,MMM为方法名)
// OC中的方法:
- (void)test {
NSLog(@"hello Objective-C!");
NSLog(@"===========OC调用Swift===========");
JRSwiftHello *swift = [[JRSwiftHello alloc] init];
[swift printHello]; // 调用Swift中方法报错
}
// Swift中的方法
func printHello() {
print("hello Swift!")
}
- 解决办法:在Swift中的方法前加@objc(方法名)
// 修改后Swift中的方法
@objc(printHello)
func printHello() {
print("hello Swift!")
}
拓展
- Swift文件中使用OC类:在自动生成的桥接文件
XXX-Bridging-Header.h
中引入OC头文件 - OC文件中使用Swift类:在需要使用的文件中引入
#import "XXX-Swift.h"
- 注:XXX为项目名称
- Swift文件中使用OC类:在自动生成的桥接文件