我正在尝试创建一个接受任意数量参数的方法,这些参数将用于创建NSInvocation(一个方法的对象包装器)。 void指针可以作为参数在可变参数函数中传递,还是编译器需要知道提前传递的类型的大小? NSInvocation实例方法" setArgument:(void *)atIndex:index"通常是这样做的。
-(void)addArguments:(void *)argument, ... {
va_list args;
va_start(args, argument);
int index = 2;
void *value;
[self.invocation setArgument:argument atIndex:index];
index++;
while ((value = va_arg(args, void*)))
{
[self.invocation setArgument:value atIndex:index];
index++;
}
va_end(args);
return;
}