http://blog.csdn.net/grozy_sun/article/details/27634575?utm_source=tuicool
仍然需要使用C標準庫中的av_list
- (void)viewDidLoad {
[superviewDidLoad];
//http://blog.csdn.net/grozy_sun/article/details/27634575?utm_source=tuicool
[selflist:@"123",@"456",nil];
[selfstrFormat:@"123~~%@",@"124"];
}
- (void)strFormat:(NSString *)format,...{
va_list args;
va_start(args, format);
NSString *message = [[NSStringalloc]initWithFormat:formatarguments:args];
va_end(args);
NSLog(@"%@",message);
}
- (void)list:(NSString *)string,...{
//定義一個指向個數可變的參數列表指針
va_list args ; // typedef char* va_list;
//對args(列表指針)進行初始化,它指向可變參數表裏面的第一個參數\
第一個參數是args本身,第二個參數是在變參表前面緊挨着的一個變量,即“...”之前的那個參數;
va_start(args, string);
if (string) {
NSString *otherString ;
NSLog(@"%@",string); //輸出第一個字符串
while (1) {
//va_arg: 第二個參數是獲取了類型。然後返回這個指定類型的值
//並把args的位置指向變參表的下一個變量位置
otherString = va_arg(args, NSString *);
if (otherString == nil) {
break;
}else{
NSLog(@"%@",otherString);
}
}
}
//va_end(arg_ptr):清空參數列表,並置參數指針arg_ptr無效
//獲取完成後,需要將指針關掉,以避免發生危險
va_end(args);
}
2015-09-29 08:50:37.208多參傳入[912:31285] 123
2015-09-29 08:50:37.208多參傳入[912:31285] 456
2015-09-29 08:50:37.209多參傳入[912:31285] 123~~124