如何从obj-c中的NSString调用类方法?

时间:2011-06-07 10:07:45

标签: iphone objective-c ios nsstring meta

在obj-c中,我该如何调用

[myClass myString];

其中myString = @"myMethod";

应该相当于[myClass myMethod];

不确定这种元语言操作是否可行。

5 个答案:

答案 0 :(得分:9)

[myClass performSelector: NSSelectorFromString(myString)];

文件:

答案 1 :(得分:1)

[myClass class]返回元类,在元类上调用类方法。 E.g。

[NSString someClassMethod];

NSString *instanceOfString = @"some string instance";
[[instanceOfString class] someClassMethod];
编辑:我误解了这个问题。使用NSSelectorFromString从NSString获取SEL。这在Apple的Foundation Functions Reference中有记录,您还可以看到NSClassFromStringNSStringFromClassNSStringFromSelectorNSStringFromProtocolNSProtocolFromString等。

答案 2 :(得分:1)

您可以使用NSSelectorFromString,以下内容应该有效:

 SEL selector = NSSelectorFromString(@"myMethod");
 [myClass performSelector:selector withObject:nil];

答案 3 :(得分:0)

SEL mySelector = NSSelectorFromString(@"myMethod");
[myClass performSelector:mySelector];

答案 4 :(得分:0)

或者,如果您需要更多的参数和/或返回类型的灵活性而不是performSelector:并且朋友会给您,请查看NSInvocation类。