Objective c 变量参数列表-内存管理错误
我正在尝试创建一个方法,以便从va_列表快速轻松地创建NSArray,但是,当我运行该方法时,由于某个地方的内存管理不好,我收到了一个exc_bad_访问,尽管我无法确定这个地方在哪里 请你看一下代码,告诉我发生这种情况的地点和原因 提前感谢 马克斯 用法(只是为了测试它是否工作):Objective c 变量参数列表-内存管理错误,objective-c,ios,nsarray,variadic-functions,Objective C,Ios,Nsarray,Variadic Functions,我正在尝试创建一个方法,以便从va_列表快速轻松地创建NSArray,但是,当我运行该方法时,由于某个地方的内存管理不好,我收到了一个exc_bad_访问,尽管我无法确定这个地方在哪里 请你看一下代码,告诉我发生这种情况的地点和原因 提前感谢 马克斯 用法(只是为了测试它是否工作): 您忘记了nil-终止arglist。在C语言中,函数无法知道传递了多少个可变参数,因此通常会用空指针结束一系列指针(表示不再有有效的输入)。代码似乎正在对此进行检查(arg=va_arg(args,id)在达到ni
您忘记了
nil
-终止arglist。在C语言中,函数无法知道传递了多少个可变参数,因此通常会用空指针结束一系列指针(表示不再有有效的输入)。代码似乎正在对此进行检查(arg=va_arg(args,id)
在达到nil
时将为false)但是您的输入缺少它。您忘记了nil
-终止arglist。在C语言中,函数无法知道传递了多少个可变参数,因此通常会用空指针结束一系列指针(表示不再有有效的输入)。代码似乎正在对此进行检查(arg=va_arg(args,id)
在达到nil
时将为false)但是您的输入缺少它。告诉我们您在哪里调用arrayCreate()
。另外,为什么不直接使用[[NSArray alloc]initWithObjects:
?当然,我添加了用法。告诉我们在哪里调用arrayCreate()
。另外,为什么不直接使用[[NSArray alloc]initWithObjects:
?当然,我添加了用法。谢谢,我只是在您回答问题时实现了这个。但是,我在函数声明的末尾添加了NS\u REQUIRES\u NIL\u TERMINATION
,但是它返回了一个错误,请求添加一个括号:NSArray*arrayCreate(id firstObject,…NS\u REQUIRES\u NIL\u TERMINATION)
NS\u REQUIRES\u NIL\u TERMINATION超出了括号。谢谢,当你回答这个问题时,我正在实施这个。但是,我在函数声明的末尾添加了NS\u REQUIRES\u NIL\u TERMINATION
,但是它返回了一个错误,请求添加一个括号:NSArray*arrayCreate(id firstObject,…NS\u REQUIRES\u NIL\u TERMINATION)
NS\u REQUIRES\u NIL\u TERMINATION超出了括号。
NSArray *arrayCreate(id firstObject, ...) {
NSMutableArray *objects = [NSMutableArray array];
[objects addObject:firstObject];
va_list args;
va_start(args, firstObject);
id arg;
while ((arg = va_arg(args, id))) {
[objects addObject:arg];
}
va_end(args);
return [objects copy];
}
NSLog(@"%@", arrayCreate(@"1", @"2", @"3", @"4"));