可变参数类似于
NSLog(<#NSString * _Nonnull format, ...#>)
等类型的函数的编写,主要分为四步:
1> va_list p_list;
2> va_start(p_list, formart);
3> (s = va_arg(p_list, NSString *)
4> va_end(p_list);
具体例子如下:
- (void)showMessage:(NSString *)formart,... {
if (!formart) {
return;
}
NSString *s = nil;
NSMutableArray *array = [NSMutableArray array];
[array addObject:formart];
//首先在函数里定义一个va_list型的变量,这里是p_list,这个变量是指向参数的指针.
va_list p_list;
//然后用va_start宏初始化变量p_list.
va_start(p_list, formart);
//遍历传入的参数
while ((s = va_arg(p_list, NSString *))) {
[array addObject:s];
}
//清空参数指针,最后用va_end宏结束可变参数的获取。
va_end(p_list);
NSLog(@"data array-:%@",array);
}
NSLog的编写
void MyLog(NSString *format, ...) {
va_list args;
va_start(args, format);
NSLogv(format, args);
va_end(args);
}
MyLog(@"name = %@; age = %@",@"zs",@"123");