參考
http://www.numbergrinder.com/2008/12/variable-arguments-varargs-in-objective-c/
準備 interface
@interface Car : NSObject {
}
-(void)addCars:(NSString * ) title, ... ;
@end
addCars: 這個 method 有一個 NSString 的參數,第二個參數是 ...
也就是 variable arguments 重要語法
先要確定 addCars: 怎麼用
我們假設是如下使用
[car addCars:@"Toyota", @"Honda", @"BMW", nil ];
可以輸入多個 NSString 但是要 nil 結束。
再來就是 implementation
@implementation Car
-(void) addCars:(NSString *)title, ...{
va_list args;
va_start(args, title);
NSLog(@"%@", title);
NSString * car;
while ((car = va_arg(args, NSString *))) {
NSLog(@"%@",car);
}
va_end(args);
}
@end
在上方的 addCars: 裡我們用到了
va_list 這個型別,用來代表 ... 的所有內容
用 args 指向 ... 的內容
再來看到 va_start(args, title)
明確告知 args 放的內容是 title 之後的內容
然後把每一個 args 都用 NSString * 來表示, 轉型成 NSString *
用 car = va_arg(args, NSString *) 把位置給 car 變數
到 car 是 nil 為止,所以用 while
最後是用 va_end(args); 結尾。
在 main 就可以如下輸入
Car * obj = [Car new];
[obj addCars:@"Toyota",@"Honda",@"Benz",@"BMW",nil];
Console 結果是Toyota
Honda
Benz
BMW
用 nil 結尾主要是可以知道 ... 何時結束
也可以用參考提到的,
第一個參數是數字如下
- (NSNumber *) addValues:(NSNumber *) firstNumber, …
就交給大家試試了
沒有留言:
張貼留言