传递nil来执行选择器

时间:2011-05-12 19:00:33

标签: iphone objective-c ios null

我正在使用NSObject的performSelector方法来调用基于运行时确定的变量字符串的方法。

[self performSelector:NSSelectorFromString(methodName)];

方法调用在循环内。但是,在某些循环迭代中,我不想做任何事情,methodName可能是零。 似乎performSelector消息不将nil作为参数。当我不希望performSelector执行任何操作时,我该怎么办?

修改 的: 我应该更清楚。现在,我正在设置methodName = @"doNothing" - 这就是名字所暗示的 - 当我希望它为零时。我想知道是否有比这更优雅的解决方案,或只是放一个if块。 我想我的问题是 - 是否有空类型选择器?

3 个答案:

答案 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)];
}