va_list 可变参数

来源:互联网 发布:给老人买什么好 知乎 编辑:程序博客网 时间:2024/05/23 01:14

VALIST是C语言解决变参问题的一组宏,在头文件

- (NSMutableArray *)mutableArrayWithArgs:(NSString *)args, ... {    NSMutableArray * array = [NSMutableArray array];    if (args) {        NSString *tmpStr;        //定义一个具VA_LIST型的变量,这个变量是指向参数的指针        va_list strings;        //用VA_START宏初始化刚定义的VA_LIST变量        va_start(strings, args);        [array addObject:args];        //循环遍历追加        while ((tmpStr = va_arg(strings, id)) != nil) {            [array addObject:tmpStr];        }        //用VA_END宏结束可变参数的获取        va_end(strings);    }}

调用:

NSMutableArray *array = [self mutableArrayWithArgs:@"say", @"333", @"abc",nil];

输出结果:

array = (    say,    333,    abc)
0 0