OC多个形参

实现多个形参的方法

#import


@interface VarArgs :NSObject


//带有多个形参 逗号+三个点 ,...

//可变形参的声明;

- (void)test:(NSString *)name,...;


@end


#import "VarArgs.h"


@implementation VarArgs




- (void)test:(NSString *)name, ...

{

    //定义一个va_list指针变量argList,指向可变参数的列表

   va_list argList;

    // va_list一个类型,定义指向可变参数列表的指针变量

   if(name)

    {//如果第一个参数name存在,才需要处理后面的参数

        //name参数不在可变参数的列表中,因此需要先处理name参数

       NSLog(@"%@",name);

        

        //va_start(<#ap#>, <#param#>)一个函数 该函数指定开始处理可变形参的列表,并让指针变量指向可变形参列表的第一个参数;

        

        va_start(argList, name);//arglist指向第一个可变参数列表的第一个参数,开始提取可变参数列表的参数;

        

        //va_arg(argList, id)用于提取arglist指针当前指向的参数,并将指针移动指向下一个参数。

        //arg变量用于保存当前获取的参数,如果参数不为nil进入循环体

       NSString *arg = va_arg(argList,id);

        

        //va_arg(<#ap#>, <#type#>)该函数分返回获取指针当前指向的参数的值,并将指针移动到指定下一个参数

       while (arg) {

            

           //打印出每一个参数;

           NSLog(@"%@",arg);

            arg=va_arg(argList, id);

            //再次提取下一个参数,并将指针移动到指向下一个参数;

            

        }

        va_end(argList);//释放arglist指针,结束提取;

        

      //va_end(<#ap#>) 结束处理可变形参,释放指针变量。

    }

    

    

    

}

@end

#import

#import "VarArgs.h"

int main(int argc,const char * argv[])

{


    @autoreleasepool {

        

        

        //个数可变的形参只能位于形参列表的最后,且一个方法最大只能包含一个长度可变的形参;

        

       VarArgs * var = [[VarArgsalloc]init];

        [var test:@"C语言程序设计",@"objective-c程序设计",@"UI",@"网络",@"项目",@"毕业",@"月薪上万!你还在等什么,奋斗吧少年!",nil];

        

        

    }

   return 0;

}


OC多个形参_第1张图片

你可能感兴趣的:(OC)