OC中对数据库进行操作、输出日志的时候,常常要用到可变参数。在定义可变参数函数之前要
(1)引入头文件stdarg.h头文件;
(2)用…来表示可变函数参数;
(3)获取参数前需要定义一个va_list类型的变量,例如
va_list persons
,
(4)接下来我们就要取出可变参数:
va_start(persons,可变参数前面的一个变量的变量名);
...
...
f = va(persons,参数类型名);//可变参数有多少,此条语句就循环执行多少次
...
...
va_end(persons);
下面,举例进行说明:
-(NSString *)stringByApendingPathComponents:(NSString *)str, ...
{
va_list components;
va_start(components,str);
NSString *address = @"www.baidu.com";
if (str) {
while (va_arg(components, NSString *) != nil) {
[address stringByAppendingPathComponent:va_arg(components, NSString*)];
}
}
va_end(components);
return address;
}
va_start(components,str);为访问可变参数进行准备,让取数据的指针指向第一个可选参数。
va_arg(components, NSString *)获取可变参数的值,每次执行都可以获取下一个参数的值。
当所有的参数都获取之后, va_end(components);关闭components指针。
我们在实现的方法中调用可含参数函数时要注意,可变参数一般以nil结尾:
[self stringByApendingPathComponents:@"picture",@"hehe.jpg",nil];