Objective C用一个stringdynamic调用方法
我只是想知道是否有一种方法来调用一个方法,我用一个stringdynamic地build立方法的名称。
例如我有一个称为loaddata的方法
-(void)loadData;
打电话给我,通常会这样称呼它
[self loadData];
但我想能够dynamic调用一个string例如
NSString *methodName = [[NSString alloc] initWithString:@"loadData"]; [self methodName];
这是一个愚蠢的例子,但我希望你明白我的观点。 我正在使用它来build立我的iPad应用程序的数据绑定类。 很难解释,但让它火,我需要解决如何调用一个string的方法。
有任何想法吗?
谢谢
你可以尝试类似的东西
SEL s = NSSelectorFromString(selectorName); [anObject performSelector:s];
您可以使用objc_msgSend函数。 它有两个参数,接收者和select器发送给它:
objc_msgSend(self, someSelector);
您需要使用NSSelectorFromString
将您的string转换为适当的select器:
NSString *message = [self getSomeSelectorName]; objc_msgSend(self, message);
该方法也需要可变数量的参数,因此您可以使用任意数量的参数发送消息。
NSString *message = [self getSomeSelectorNameWithManyArguments]; objc_msgSend(self, message, arg1, arg2, arg3, arg4);
你需要NSSelectorFromString
。