黑马程序员—OC基础--写出形参个数可变的方法

------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------


 /***********

 *   今天进行了形参个数可变的方法的学习.收获如下:

 * 

 * 1. 形式:-(返回值) 方法名:(参数类型* name...

 * 

 * 2. 获取个数可变的行参,需要4个关键字:va_list, va_start, va_end, var_arg 

 *          va_list:   这是一个类型,用于定义一个指针变量(指向可变的行参列表)

 *          va_start:   这是一个函数,接收行参列表和第一个行参

 *          va_end:     结束处理可变行参,释放va_list型指针变量

 *          var_arg:    该函数去处当前指向的对象,并将指针指向下一个对象

 *

 *

 ************/



代码实现:

#import <Foundation/Foundation.h>

/***************************   定义  *****************************/
/**/@interface VarArgs:NSObject
/**/
/**/-(void) test:(NSString* )name,...;     //定义了一个形参个数可变的方法
/**/
/**/@end
/******************************************************************/


/***************************  实现  *******************************/
/**/@implementation VarArgs
/**/
/**/-(void)test:(NSString *) name,...
/**/{
/**/    va_list argList;    //定义了一个指针变量argList,指向行参列表
/**/    if(name)        //第一个参数存在,才需要处理后面的参数
/**/    {
/**/        NSLog(@"%@",name);      //name是不在列表中的,须先处理name
/**/        va_start(argList, name);    //向va_start函数传入(行参列表,第一个行参)
/**/        NSString* arg = va_arg(argList, id);    //arg用于存储参数,如果不为nil 进入循环
/**/        while(arg)
/**/        {
/**/            NSLog(@"%@",arg);       //打印
/**/            arg = va_arg(argList, id);  //去处参数,并将指针移到下一个
/**/        }
/**/        va_end(argList);    //结束并释放指针变量
/**/    }
/**/}
/**/@end
/******************************************************************/


int main(int argc, const char * argv[])
{
    @autoreleasepool
    {
        VarArgs* va = [[VarArgs alloc] init];
        
        [va test: @"呵呵",@"哈哈",@"喔哈哈",nil];
        
    }
    return 0;
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值