从Objective-C类调用Swift函数



我正试图从Objective-C类调用Swift函数它正在投掷:

No visible @interface for 'TUtils' declares the selector 'run'

TUtils.swift

@objc
public class TUtils: NSObject  {

@objc func run() {
print("Hello test")
}
}

消耗.m

#import <RKit/RKit-Swift.h>

inline int tempFun () {
TUtils *obj = [TUtils new];
[obj run];
return 0;
}

感谢

典型的问题是函数需要是public才能被Objective-C看到。正如文件所说:

默认情况下,生成的头包含用public或open修饰符标记的Swift声明的接口。如果你的应用目标有一个Objective-C桥接头,那么生成的头也包括用内部修饰符标记的接口。

所以尝试将您的功能更改为

@objc public func run() {

看看这是否有帮助。如果没有,请清除并从头开始重建。您还可以打开RKit-Swift.h(通过命令+单击它(,检查TUtils是如何声明的,以及Objective-C可以看到哪些函数。

最新更新