容易發(fā)現(xiàn)Cocoa Foundation 中提供了一些可變參數(shù)的方法,如:
NSLog(NSString *format, ...)
在實際的編程實踐中,我們也需要自己實現(xiàn)可變參數(shù)的方法。在Objc中,是依靠原生C庫來的實現(xiàn)的。
請看示例:

1 - (void) doLog:(NSString *)formatStr, ... { 2 3 NSMutableArray *arr = [[NSMutableArray alloc]init]; 4 5 NSString *arg; 6 7 va_list argList; 8 9 if(formatStr)10 11 {12 13 va_start(argList, formatStr);14 15 while ((arg = va_arg(argList, NSString*)))16 17 {18 19 [arr addObject:arg];20 21 }22 23 va_end(argList);24 25 }26 27 28 29 for (NSString *str in arr) {30 31 NSLog(@"%@", str);32 33 }34 35 36 37 }
下面就代碼段中用的C方法一一說明;
1. va_list argList:定義一個指向個數(shù)可變的參數(shù)列表指針;
2. va_start(ap, param)param是第一個可選參數(shù)前的固定參數(shù),va_start 使指針指向第一個可選參數(shù);
3. va_arg(ap, type)返回參數(shù)列表中指針ap所指的參數(shù),返回類型為type,并使指針ap指向參數(shù)列表中下一個參數(shù);
4. va_end(ap) 清空參數(shù)列表,并置參數(shù)指針ap無效.
新聞熱點
疑難解答