iOS学习笔记(5)形参个数可变的方法

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

如果在定义方法时,在最后一个形参明后增加逗号和三点(,...),则表明该形参可以接受多个参数值。

为了在程序中获取个数可变的形参,需要使用如下关键字

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

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

· va_end:结束处理可变形参,释放指针变量

· va_arg:该函数返回获取指针当前指向的参数的值,并将指针移动到指向下一个参数

例子

Varargs.h

#import<Foundation/Foundation.h>@interfaceVarargs : NSObject//定义形参个数可变的方法-(void)test:(NSString *)name,...;@end

Varargs.m

#import"Varargs.h"@implementationVarargs-(void)test:(NSString *)name,...

{//使用va_list定义一个argList指针变量,该指针变量指向可变参数列表va_list argList;//如果为第一个name参数存在,才需要处理后面的参数if(name)

{//由于name参数并不在可变参数列表中,因此先处理name参数NSLog(@"%@", name);//让argList指向第一个可变参数列表的第一个参数,开始提取可变参数列表的参数va_start(argList, name);//va_arg用于提取argList指针当前指向的参数,并将指针移动到指向下一个参数//arg变量用于保存当前获取的参数,如果该参数不为nil,进入循环体NSString* arg = va_arg(argList,id);while(arg)

{//打印出每一个参数.NSLog(@"%@",arg);//再次提取下一个参数,并将指针移动到指向下一个参数arg = va_arg(argList,id);

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

}

}@end

main函数

intmain(intargc,constchar*argv[])

{

@autoreleasepool {

Varargs* va =[[Varargs alloc] init];

[va test:@"疯狂iOS讲义",@"疯狂Android讲义",@"疯狂Ajax讲义", nil];

}return0;

}

注意:个数可变的形参只能处于形参列表的最后。一个方法中最多之恩给你保吉安一个长度可变的形参。

引自《疯狂iOS讲义(上)》

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航