OC处理可变参数的方法

时间:2022-08-24 14:57:44

Objective-C 处理可变参数

va_list
这是一个类型, 用于定义指向可变参数列表的指针变量

va_start
这是一个函数, 指定开始处理可变形参的列表, 并让指针变量指向可变形参的第一个参数

va_end
结束处理可变形参, 并释放指针

va_arg
该函数返回指针变量当前指向的参数的值, 并让指针变量指向下一个参数

 

- (void)testMultiple:(NSString *)name ... {
    
    // 定义va_list变量(指针)
    va_list arg_list;

    if (name) {
        
        // 把arg_list指向name这个可变形参的第一个位置
        va_start(arg_list, name);

        // 提取一个参数, 返回一个NSString*, 并将指针后移
        NSString *temp_arg = va_arg(arg_list, id);
        while (temp_arg) {
            NSLog(@"%@", temp_arg);
            // 继续后移, 遇到nil跳出循环
            temp_arg = va_arg(arg_list, id);
        }

        va_end(arg_list);

    }

}