将可变数量的参数传递给选择器

问题描述:

我想从包含vargs参数列表的方法调用选择器。有没有办法动态地向选择器提供多个参数的变量?将可变数量的参数传递给选择器

+0

我很难理解你的意思。在具有'va_list'参数的方法内部,您想要a)调用另一个采用'va_list'的方法? 2)使用'performSelector:'或类似的方法,并使用另一个采用'va_list'的方法的选择器? 4)? “NSInvocation”可能是答案,但用更清晰的问题提供更详细的解决方案会更容易。 – 2012-07-24 23:52:53

+0

我在想你可以通过一个可变的参数列表来执行选择器,但我认为你不能。它看起来只有3个选项:0个参数,1个参数或2个参数。如果是这种情况,最明智的选择是提供一些重载方法,然后在其他情况下使用字典(如建议)。 – Brian 2012-07-24 23:55:11

+0

您是否在寻找'objc_msgSend()',也许? – 2012-07-25 01:04:59

不幸的是,在使用performSelector时,传递多个参数的唯一选择是传入NSArray或NSDictionary等。显然,您必须更改接收方法的构造函数以接受新的参数存储对象。

另外,你可以看看使用NSInvocation

+2

“传递给performSelector的1或2个参数应该足够用于任何人” - Steve Jobs,1996 – Brian 2012-07-25 00:01:21

你可以传递一个NSMutableDictionary,你可以有许多参数。