iOS之VA_LIST初次使用

首先介绍下VA_LIST,VALIST是C语言中解决变参问题的一组宏,在头文件中。

在平常我们会为了让代码更加的简洁可扩展,我们定义的方法或者函数的参数的不定的,所以,VA_LIST可以很好的解决这个问题,废话少说,上代码:

@implementation ViewController


- (void)viewDidLoad {

    [super viewDidLoad];

    NSMutableArray *array  = [selftest:@"test1",@"test2",@"test3",nil];

    NSLog(@"%@",array);

}


-(NSMutableArray *)test:(NSString *)p1,...

{

    NSMutableArray *array = [NSMutableArrayarray];

//   定义一具VA_LIST型的变量,这个变量是指向参数的指针

    va_list list;

    id tag;

//   VA_START宏初始化刚定义的VA_LIST变量

    va_start(list, p1);

//  VA_ARG返回可变的参数,VA_ARG的第二个参数是你要返回的参数的类型,如果函数有多个可变参数的,依次调用VA_ARG获取各个参数

    while ((tag = va_arg(list, id))) {

        [array addObject:tag];

    }

//  VA_END宏结束可变参数的获取

    va_end(list);

    return array;

}

@end

打印结果如下:


可见,打印出的传递的除第一个参数之外的参数,这样,我们可以在test方法中根据参数的不同而处理不同的业务逻辑。




你可能感兴趣的:(IOS)