我必须调用类的方法。该方法是否可能存在。我正在寻找两个小时的解决方案。以下没有参数sayHello()
我有课:
class myClass: NSObject {
func say(something:String){
print("I say : (something)")
}
func sayHello(){
print("Hello")
}
}
第一步:从带有参数的字符串创建选择器
let selector = NSSelectorFromString("sayHello" )
let selectorWithParam = NSSelectorFromString("say:" )
第二步:测试该方法是否存在
self.bot?.responds(to: selector)// true
self.bot?.responds(to: selectorWithParam) // false
它不适用于参数!
在旁边,我尝试了swift3 #selector
,但是我找不到从字符串中输入方法
swift方法
func say(something:String)
映射到Objective-C作为
- (void)sayWithSomething:(NSString * _Nonnull)something;
因此,正确的选择器将为
let selectorWithParam = NSSelectorFromString("sayWithSomething:" )
使用#selector
较少容易出错:
let selectorWithParam = #selector(myClass.say(something:))