我无法弄清楚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];
}
答案 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)]);
}