2013-05-28 55 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

相關問題