我正在尝试创建一个接受任意数量参数的方法,这些参数将用于创建 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;
}