5

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

[myClass myString];

在哪里myString = @"myMethod";

应该相当于[myClass myMethod];

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

4

5 回答 5

9
[myClass performSelector: NSSelectorFromString(myString)];

文件:

于 2011-06-07T10:13:04.587 回答
1

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

[NSString someClassMethod];

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

编辑:我误读了这个问题。用于NSSelectorFromString从 NSString 获取 SEL。这记录在 Apple 的Foundation Functions Reference中,您还将在其中看到NSClassFromStringNSStringFromClassNSStringFromSelector等。NSStringFromProtocolNSProtocolFromString

于 2011-06-07T10:11:31.870 回答
1

您可以使用NSSelectorFromString,类似以下内容的东西应该可以工作:

 SEL selector = NSSelectorFromString(@"myMethod");
 [myClass performSelector:selector withObject:nil];
于 2011-06-07T10:14:15.767 回答
0
SEL mySelector = NSSelectorFromString(@"myMethod");
[myClass performSelector:mySelector];
于 2011-06-07T10:15:33.987 回答
0

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

于 2011-06-07T11:22:23.940 回答