可以使用可变参数作为方法的第一个参数吗?

时间:2013-05-28 21:59:48

标签: objective-c variadic-functions

通常,使用可变参数的方法(和函数)似乎将它作为第二个参数,如下所示:

- (void)setContentsWithFormat:(NSString *)formatString, ...;

是否可以声明此方法,因此可变参数是此方法的第一个也是唯一的参数?如果是这样,它的语法是什么?

我尝试过:- (void)setContentsWithArguments:(...)但这不起作用。

2 个答案:

答案 0 :(得分:2)

不,这是不可能的。第一个参数实际上是参考点,它告诉可变参数函数如何访问其他参数。因此va_start函数将第一个方法参数(或者更确切地说是veridic之前的参数)作为其参数:

- (void)doSomethingWithStrings:(NSString *)firstString, ...
{
    va_list vList;
    va_start(vList, firstString);
    ... blah blah
}

答案 1 :(得分:0)

似乎GCC supported it的语法为:

- (void)setContentsWithArguments:...

但LLVM没有。