我只是想知道是否有办法调用一个方法,我用一个字符串动态建立方法的名称。
e.g。我有一个名为loaddata
的方法-(void)loadData;
打电话给我,我通常称之为
[self loadData];
但我希望能够用字符串动态调用它,例如
NSString *methodName = [[NSString alloc] initWithString:@"loadData"];
[self methodName];
这是一个愚蠢的例子,但我希望你明白我的观点。我正在使用它来为我为我的IPad应用程序设置的数据绑定类。很难解释,但要解决它,我需要弄清楚如何用字符串调用方法。
有什么想法吗?
由于
答案 0 :(得分:103)
您可以尝试类似
的内容SEL s = NSSelectorFromString(selectorName);
[anObject performSelector:s];
答案 1 :(得分:11)
您可以使用objc_msgSend函数。它需要两个参数,接收器和选择器发送给它:
objc_msgSend(self, someSelector);
您需要使用NSSelectorFromString
:
NSString *message = [self getSomeSelectorName];
objc_msgSend(self, message);
该方法还采用可变数量的参数,因此您可以发送包含任意数量参数的消息。
NSString *message = [self getSomeSelectorNameWithManyArguments];
objc_msgSend(self, message, arg1, arg2, arg3, arg4);