各种performSelector:...
方法最多可以处理传递给指定选择器的两个参数。如果我需要传递三个或更多参数,我该怎么办?
答案 0 :(得分:14)
您需要使用NSInvocation类。有关使用它们的详细信息,请查看this SO question。
答案 1 :(得分:0)
我不喜欢NSInvocation方式,它需要太多代码。
如果你想立即执行选择器,这里有一个简单而干净的方法:
// 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);