在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中有记载,您还可以在其中看到NSClassFromString
、NSStringFromClass
、NSStringFromSelector
、NSStringFromProtocol
和NSProtocolFromString
等。
您可以使用NSSelectorFromString
,应该可以使用以下内容:
SEL selector = NSSelectorFromString(@"myMethod");
[myClass performSelector:selector withObject:nil];
SEL mySelector = NSSelectorFromString(@"myMethod");
[myClass performSelector:mySelector];
或者,如果您需要比performSelector:
和朋友们更灵活的参数和/或返回类型,请查看NSInvocation类。