OC的可變參數

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];
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章