Iphone 目标C使用字符串动态调用方法

Iphone 目标C使用字符串动态调用方法,iphone,objective-c,dynamic,methods,messaging,Iphone,Objective C,Dynamic,Methods,Messaging,我只是想知道是否有一种方法可以调用一个方法,在这个方法中,我用一个字符串动态地构建方法的名称 e、 我有一个叫做loaddata的方法 -(void)loadData; 我通常会这样称呼它 [self loadData]; 但我希望能够用字符串动态调用它,例如 NSString *methodName = [[NSString alloc] initWithString:@"loadData"]; [self methodName]; 这是一个愚蠢的例子,但我希望你明白我的意思。我正在使用

我只是想知道是否有一种方法可以调用一个方法,在这个方法中,我用一个字符串动态地构建方法的名称

e、 我有一个叫做loaddata的方法

-(void)loadData;
我通常会这样称呼它

[self loadData];
但我希望能够用字符串动态调用它,例如

NSString *methodName = [[NSString alloc] initWithString:@"loadData"];
[self methodName];
这是一个愚蠢的例子,但我希望你明白我的意思。我正在使用它为我的IPad应用程序设置数据绑定类。很难解释,但要启动它,我需要解决如何使用字符串调用方法

有什么想法吗


谢谢

你可以试试

SEL s = NSSelectorFromString(selectorName);
[anObject performSelector:s];

您可以使用objc_msgSend函数。它需要两个参数,一个是接收器,另一个是选择器:

objc_msgSend(self, someSelector);
您需要使用
nsselector或fromstring
将字符串转换为相应的选择器:

NSString *message = [self getSomeSelectorName];
objc_msgSend(self, message);
该方法还接受可变数量的参数,因此您可以发送具有任意数量参数的消息

NSString *message = [self getSomeSelectorNameWithManyArguments];
objc_msgSend(self, message, arg1, arg2, arg3, arg4);

+1个简单明了的问题!我要调用的方法是一个返回NSString的函数。在这种情况下,该方法返回的值在一种情况下是NSString。我得到一个错误,说左值必须作为赋值的左操作数。这是我的代码:SEL s=NSSelectorFromString(@“getIDString”);[self text]=[boundEntity性能选择器:s];什么是[self text],您在其中分配值return getIDString。
[boundEntity performSelector:s]
返回的值类型与
[self text]
的类型不匹配。我认为您需要为text设置@property并调用
[self setText:[[boundEntity performSelector:s]]]
。performSelector可能会导致泄漏,因为选择器未知!