我照书上的方法,写了一个函数来处理可变参数,为什么老是出现错误呢?
-(void)sayHelloTo:(NSString *)first, ...{
va_list names;
if (first) {
va_start(names, first);
NSString* name = nil;
while ((name = va_arg(names, id))) {
NSLog(@"%@", name);
}
va_end(names);
}
}
运行时,名字是都打印出来了,不过最后出现了异常,异常信息如下:Thread1:EXC_BAD_ACCESS(code=EXC_I386_GPFLT)
请问这是什么原因?本人是初学者,谢谢!!!!
-(void)sayHelloTo:(NSString *)first, ...{
va_list names;
if (first) {
va_start(names, first);
NSString* name = nil;
while ((name = va_arg(names, id))) {
NSLog(@"%@", name);
}
va_end(names);
}
}
运行时,名字是都打印出来了,不过最后出现了异常,异常信息如下:Thread1:EXC_BAD_ACCESS(code=EXC_I386_GPFLT)
请问这是什么原因?本人是初学者,谢谢!!!!
va_list names;
if (first) {
va_start(names, first);
NSString* name = nil;
while ((name = va_arg(names, id))) {
NSLog(@"%@", name);
}
va_end(names);
}
}这样就可以了....没有那个,......的意思是还可以用更多的参数例如-(void)sayHelloTo:(NSString *)first second:(NSString *)sec 是这个意思........
这样也可以
2. 请在参数最后加nil,如[self sayHelloTo:@"abc", @"def", nil];如果没加nil就会出现楼主描述的错误。