在obj-c中,我该如何调用
[myClass myString];
其中myString = @"myMethod";
应该相当于[myClass myMethod];
不确定这种元语言操作是否可行。
答案 0 :(得分:9)
[myClass performSelector: NSSelectorFromString(myString)];
文件:
NSString
转换为选择器(类型SEL
)答案 1 :(得分:1)
[myClass class]
返回元类,在元类上调用类方法。 E.g。
[NSString someClassMethod];
NSString *instanceOfString = @"some string instance";
[[instanceOfString class] someClassMethod];
编辑:我误解了这个问题。使用NSSelectorFromString
从NSString获取SEL。这在Apple的Foundation Functions Reference中有记录,您还可以看到NSClassFromString
,NSStringFromClass
,NSStringFromSelector
,NSStringFromProtocol
和NSProtocolFromString
等。
答案 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类。