2

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

0 回答 0