可变函数中的错误“线程1:EXC_BAD_ACCESS(code = EXC_I386_GPFLT)”

时间:2019-04-24 20:42:38

标签: objective-c variadic-functions

我有这个方法,应该采用可变数目的String参数并将它们放在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);
    }

但是我遇到了这个错误:

  

线程1:EXC_BAD_ACCESS(代码= EXC_I386_GPFLT)

非常感谢您。

1 个答案:

答案 0 :(得分:3)

您的代码未按编写的方式运行,但是最有可能导致错误访问错误的原因是,调用函数时您没有终止参数列表。

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

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