7、OC 形参个数可变的方法

NSLog函数可以传入多个参数,这个就是形参个数可变的方法,定义方法是在最后一个形参名后增加逗号和(…)。
为了在程序中获取个数可变的参数,需要使用如下关键字:
va_list:用于定义指向可变参数列表的指针变量
va_start:该函数指定开始处理可变形惨的列表,并让指针变量指向可变形参列表的第一个参数
va_end:结束处理可变形参,释放指针变量
va_arg:该函数返回获取指针当前指向的参数的值,并将指针移动到指向下一个参数。
-(void)printClass:(NSString*)cName andStus:(NSString*)sName,...{
    //使用va_list定义一个argList指针变量,该指针变量指向可变参数列表
    va_list argList;
    NSLog(@"class=%@",cName);
    //如果第一个sName参数存在
    if (sName) {
        NSLog(@"%@",sName);
        //让argList指向第一个可变参数列表的第一个参数
        va_start(argList, sName);
        //va_arg用于提取argList指针当前指向的参数,并将指针移动到指向下一个参数
        //arg变量用于保存当前获取的参数
        NSString* arg = va_arg(argList, id);
        while (arg) {
            NSLog(@"%@",arg);
            //再次提取下一个参数,并将指针移动到下一个参数
            arg = va_arg(argList, id);
        }
        va_end(argList);
       
    }
}

测试一下
 Student* stu = [[Student alloc]init];
 [stu printClass:@"一班" andStus:@"小明",@"小红",@"小灰",@"小兰",nil];

输出:
2014-12-05 20:25:26.138 Blog_01_OC[2587:114588] class= 一班
2014-12-05 20:25:26.138 Blog_01_OC[2587:114588] 小明
2014-12-05 20:25:26.138 Blog_01_OC[2587:114588]
小红
2014-12-05 20:25:26.138 Blog_01_OC[2587:114588]
小灰
2014-12-05 20:25:26.138 Blog_01_OC[2587:114588]小兰


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值