The various performSelector:...
methods can handle a maximum of two arguments passed to the specified selector. What can I do if I need to pass three or more arguments?
Use performSelector with three or more arguments?
Asked Answered
Yeah, if you have control over the callee side the simplest approach is to throw the parms into an NSDictionary. And even if you don't "own" the callee you can often make a "glue" routine in your own class to call it (assuming you're creating the selector, vs having it handed to you). Otherwise the NSInvocation approach is what you need. –
Ella
possible duplicate of performSelector with more than 2 objects –
Intermigration
You need to use NSInvocation class for that. Check this SO question for more details on using them.
I dislike the NSInvocation
way, it needs too much code.
If you’d like perform the selector immediately, here is an simple and clean way:
// Assume we have these variables
id target, SEL aSelector, id parameter1, id parameter2;
// Get the method IMP, method is a function pointer here.
id (*method)(id, SEL, id, id) = (void *)[vc methodForSelector:aSelector];
// IMP is just a C function, so we can call it directly.
id returnValue = method(vc, aSelector, parameter1, parameter2);
© 2022 - 2024 — McMap. All rights reserved.