使用带有三个或更多参数的performSelector?

时间:2011-10-05 12:09:25

标签: objective-c selector performselector

各种performSelector:...方法最多可以处理传递给指定选择器的两个参数。如果我需要传递三个或更多参数,我该怎么办?

2 个答案:

答案 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);