Objective可变参数,va_list,va_start,va_arg,va_end

1.va_list,va_start,va_arg,va_end

- (void)viewDidLoad {
    [super viewDidLoad];
    
    [self list:@"AAA",@"BBB",@"CCC",@"DDD",nil];
    [self stringTest:@"AAA",@"BBB",nil];
    
}

- (void)list:(NSString *)string,... {
    
    /*
     # 前言:
    这里有个概念:string是固定参数,不是可变参数,可变参数是指...
    也就是[self list:@"AAA",@"BBB",@"CCC",@"DDD",nil];
    中 @“AAA”是固定参数 @"BBB",@"CCC",@"DDD"为可变参数
     */
    
    // 定义一个指向个数可变的参数列表指针
    va_list argsList;
    
    // 使这个argsList指针指向参数列表的第一个参数,即指针->@"BBB"
    va_start(argsList, string);
    
    while (string) {
        NSLog(@"%@",string);
        
        // 返回参数列表中指针argsList所指的参数,返回类型为type,并使指针argsList指向参数列表中的下一个参数
        string = va_arg(argsList, NSString *);
    }
    
    // 清空参数列表,并置参数指针argsList无效
    va_end(argsList);
}

输出结果为


image.png

2.(instancetype)initWithFormat:(NSString *)format arguments:(va_list)argList;作用

image.png

你可能感兴趣的:(Objective可变参数,va_list,va_start,va_arg,va_end)