Выполнить селектор - PullRequest
       8

Выполнить селектор

0 голосов
/ 29 февраля 2012

Я не могу понять, почему код оператора if не выполняется

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

    SEL selector = NSSelectorFromString(str);

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

EDIT // Этот код работает нормально

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

Ответы [ 3 ]

2 голосов
/ 29 февраля 2012

capitalizedString не является статическим методом. Таким образом, вы не можете использовать NSString напрямую. Вместо этого вы должны использовать объект этого. В вашем случае это не может быть имя или ул.

1 голос
/ 29 февраля 2012

Вы хотите

if ([name respondsToSelector:selector])

или

if ([NSString instancesRespondToSelector:selector])

Теперь, когда у вас это есть, вы спрашиваете, реагирует ли сам объект класса на метод, а это не так..

0 голосов
/ 29 февраля 2012

Вы можете просто попробовать это

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