Im just wondering whether there is a way to call a method where i build the name of the method on the fly with a string.
e.g. I have a method called loaddata
-(void)loadData;
to call this i would normally call it like
[self loadData];
But i want to be able to call it dynamically with a string e.g.
NSString *methodName = [[NSString alloc] initWithString:@"loadData"]; [self methodName];
This is a stupid example but i hope you get my point. I am using it for databinding classes that I am setting up for my IPad application. Hard to explain but to get it to fire I need to work out how to call a method with a string.
Any ideas?
Thanks
You can try something like
SEL s = NSSelectorFromString(selectorName); [anObject performSelector:s];
You can use the objc_msgSend function. It takes two parameters, the receiver and the selector to send to it:
objc_msgSend(self, someSelector);
You'll need to turn your string into the appropriate selector using NSSelectorFromString
:
NSString *message = [self getSomeSelectorName]; objc_msgSend(self, message);
The method also takes a variable number of arguments, so you can send messages with any number of arguments.
NSString *message = [self getSomeSelectorNameWithManyArguments]; objc_msgSend(self, message, arg1, arg2, arg3, arg4);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With