我正在使用NSObject的performSelector方法来调用基于运行时确定的变量字符串的方法。
[self performSelector:NSSelectorFromString(methodName)];
方法调用在循环内。但是,在某些循环迭代中,我不想做任何事情,methodName
可能是零。
似乎performSelector消息不将nil作为参数。当我不希望performSelector执行任何操作时,我该怎么办?
修改 的:
我应该更清楚。现在,我正在设置methodName = @"doNothing"
- 这就是名字所暗示的 - 当我希望它为零时。我想知道是否有比这更优雅的解决方案,或只是放一个if块。
我想我的问题是 - 是否有空类型选择器?
答案 0 :(得分:12)
检查它是否为nil
?
SEL selector = NSSelectorFromString(methodName);
if (selector != nil) {
[self performSelector:selector];
}
答案 1 :(得分:6)
你可能正在寻找这个 -
if ([self respondsToSelector:NSSelectorFromString(methodName)]) {
[self performSelector:NSSelectorFromString(methodName)];
}
答案 2 :(得分:5)
if (methodName != nil) {
[self performSelector:NSSelectorFromString(methodName)];
}