今天研究了一下Swift和OC混编,在OC文件中调用Swift方法时候报错:
No visible @interface for 'XXX' declares the selector 'XXX'
解决方法
因为Swift提供给OC的方法需要用@objc
来显式声明一下,并用public
修饰其方法,另外提供带参数的方法的时候,Swift转化成OC方法会带上参数名字,例如:
Swift代码:
@objc public func showSwiftLog(str:String) -> Void {
print(str)
}
当在OC中调用的时候:
Swift4OC *sc = [[Swift4OC alloc]init];
[sc showSwiftLogWithStr:@"oc类中调用swift方法"];