What you are doing here is a bit dangerous. Anyways you achieve this by using selectors.
Objects adopt a protocol that tells them if they can perform certain actions. So basically, you have to first get the strings for the function and the argument out of the array.
Then you create a selector by using the function that allows it to be called at runtime.
SEL aSelector = NSSelectorFromString(@"methodName");
Then, ASK if your object can perform the selector (if you just blindly send it bad things can happen)
- (BOOL)respondsToSelector:(SEL)aSelector
And finally you can perform the selector with the object that you previously got (this is the argument).
- (id)performSelector:(SEL)aSelector withObject:(id)anObject
See this for selectors: https://developer.apple.com/library/ios/documentation/General/Conceptual/DevPedia-CocoaCore/Selector.html
And this for the object protocol:
https://developer.apple.com/library/ios/documentation/cocoa/reference/foundation/Protocols/NSObject_Protocol/Reference/NSObject.html#//apple_ref/occ/intfm/NSObject/respondsToSelector:
Edit: As danh mentions, it is important for the selector name to have a trailing colon, since your method accepts an argument. If there was no argument being passed you wouldn't need it.
Since
- (id)doSomething;
is different to
- (id)doSomething:(id)argument;