执行选择器

时间:2012-02-29 09:14:21

标签: ios objective-c selector

我无法弄清楚if语句中的代码未执行的原因

 NSString *str = @"capitalizedString";
    NSString *name = @"chris";

    SEL selector = NSSelectorFromString(str);

    if([NSString respondsToSelector:selector]) {
        NSLog(@"%@", [name performSelector:selector]);
    }

编辑// 这段代码工作正常

NSString *color = @"blueColor";
SEL selector = NSSelectorFromString(color); 
    if([UIColor respondsToSelector:selector])
    {
        myColor = [UIColor performSelector:selector];
    }

3 个答案:

答案 0 :(得分:2)

capitalizedString不是静态方法。所以你不能直接使用NSString。相反,你应该使用它的对象。在你的情况下,它可以是名字或str。

答案 1 :(得分:1)

你想要

if ([name respondsToSelector:selector])

if ([NSString instancesRespondToSelector:selector])

你现在拥有它的方式,你要问的是类对象本身是否响应了方法,而不是。

答案 2 :(得分:0)

你可以试试这个

if([NSString respondsToSelector:@selector(capitalizedString)]) {
        NSLog(@"%@", [name @selector(capitalizedString)]);
    }