Iphone 目标C使用字符串动态调用方法
我只是想知道是否有一种方法可以调用一个方法,在这个方法中,我用一个字符串动态地构建方法的名称 e、 我有一个叫做loaddata的方法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]; 这是一个愚蠢的例子,但我希望你明白我的意思。我正在使用
-(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可能会导致泄漏,因为选择器未知!