2013-05-28 50 views
0

典型地,使用可变参数的方法(和函数)似乎有作为像这样的第2个参数:可能使用可变参数作为方法的第一个参数吗?

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

是否有可能这样一个可变参数是此第一和唯一的参数来声明该方法方法?如果是这样,它的语法是什么?

我试过了:- (void)setContentsWithArguments:(...)但是没有奏效。

回答

2

不,这是不可能的。第一个参数实际上是指示可变参数如何访问附加参数的参考点。因此,va_start函数采用第一种方法的参数(或者更确切地说,参数只是veridic之前)作为它的参数:

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

但Objective-C方法在前面,'self'和'_cmd'中总是有两个隐式参数。所以'va_start'可以带'_cmd'。 – newacct

相关问题