OC中對數據庫進行操作、輸出日誌的時候,常常要用到可變參數。在定義可變參數函數之前要
(1)引入頭文件stdarg.h頭文件;
(2)用…來表示可變函數參數;
(3)獲取參數前需要定義一個va_list類型的變量,例如
va_list persons
,
(4)接下來我們就要取出可變參數:
va_start(persons,可變參數前面的一個變量的變量名);
...
...
f = va(persons,參數類型名);//可變參數有多少,此條語句就循環執行多少次
...
...
va_end(persons);
下面,舉例進行說明:
-(NSString *)stringByApendingPathComponents:(NSString *)str, ...
{
va_list components;
va_start(components,str);
NSString *address = @"www.baidu.com";
if (str) {
while (va_arg(components, NSString *) != nil) {
[address stringByAppendingPathComponent:va_arg(components, NSString*)];
}
}
va_end(components);
return address;
}
va_start(components,str);爲訪問可變參數進行準備,讓取數據的指針指向第一個可選參數。
va_arg(components, NSString *)獲取可變參數的值,每次執行都可以獲取下一個參數的值。
當所有的參數都獲取之後, va_end(components);關閉components指針。
我們在實現的方法中調用可含參數函數時要注意,可變參數一般以nil結尾:
[self stringByApendingPathComponents:@"picture",@"hehe.jpg",nil];