Ошибка «Поток 1: EXC_BAD_ACCESS (code = EXC_I386_GPFLT)» в функции с переменными параметрами - PullRequest
1 голос
/ 24 апреля 2019

У меня есть этот метод, который должен принимать переменное число аргументов 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 Ответ

3 голосов
/ 25 апреля 2019

Ваш код работает не так, как написано, но, скорее всего, источником вашей ошибки неправильного доступа является то, что вы не завершаете список аргументов при вызове функции.

т.е.

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

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

...