我无法从swift函数关闭的Objective-c文件中调用swift文件中的函数。
这是Swift函数
//In Utilities class
static func getString(query: NSString, completion: @escaping (_ response: NSString) -> Void) {
completion("hello")
}
这是我尝试在Objective-C类中调用它的方式:
[Utilities getString:@"hi there" completion:^(NSString* response) {
NSLog(response);
}];
我收到错误消息“选择器'getString:completion:的未知类方法'
上面有什么问题?
注意:我可以在没有闭包/补全块的情况下调用更简单的方法。
in swift class
static func myTest () {
print("function called")
}
从Objective-c类调用,具有:
[Utilities myTest];
所以问题似乎与闭包语法有关。
答案 0 :(得分:3)
用
包围类@objcMembers class Utilities:NSObject {
或功能
@objc class func getString(query: NSString, completion: @escaping (_ response: NSString) -> Void) {
[Utilities getStringWithQuery:@"hi there" completion:^(NSString* response) {
NSLog(response);
}];