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



在obj-c中,如何调用

[myClass myString];

其中myString = @"myMethod";

应该相当于[myClass myMethod];

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

[myClass performSelector: NSSelectorFromString(myString)];

文件:

  • -performSelector:将指定的选择器发送给接收器
  • NSSelectorFromString()将NSString转换为选择器(类型为SEL

[myClass class]返回元类,在元类上调用类方法。例如

[NSString someClassMethod];
NSString *instanceOfString = @"some string instance";
[[instanceOfString class] someClassMethod];

编辑:我误解了这个问题。使用NSSelectorFromString从NSString中获取SEL。这在Apple的Foundation Functions Reference中有记载,您还可以在其中看到NSClassFromStringNSStringFromClassNSStringFromSelectorNSStringFromProtocolNSProtocolFromString等。

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

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

或者,如果您需要比performSelector:和朋友们更灵活的参数和/或返回类型,请查看NSInvocation类。

最新更新