可变参数函数中的错误 "Thread 1: EXC_BAD_ACCESS (code=EXC_I386_GPFLT) "

Error "Thread 1: EXC_BAD_ACCESS (code=EXC_I386_GPFLT) " in a variadic function

我有这个方法,它应该接受可变数量的字符串参数并将它们放在 NSMutableArray 中:

    - (id)testArray: (NSString*) question, ... {

        NSMutableArray* questionsArray = [[NSMutableArray alloc] initWithObjects:question, nil];
        id eachObject;
        [_questionsArray addObject:question];
        va_list list;
        va_list (list, question);
        while ((eachObject = va_arg(args, id)) != nil) {
              [_questionsArray addObject:eachObject];
        }
        va_end(args);
    }

但是我收到这个错误:

Thread 1: EXC_BAD_ACCESS (code=EXC_I386_GPFLT)

非常感谢。

您的代码与写的不一样 运行,但很可能导致您访问错误的原因是您在调用函数时没有终止参数列表。

[self testArray:@"abc123", @"def456", nil];

https://www.cocoawithlove.com/2009/05/variable-argument-lists-in-cocoa.html