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

问题描述 投票:1回答:1

我有这个方法,它应该采用可变数量的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)

非常感谢你。

objective-c variadic-functions
1个回答
3
投票

您的代码不会像写入的那样运行,但很可能是您的错误访问错误的来源是您在调用函数时不会终止您的参数列表。

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

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

© www.soinside.com 2019 - 2024. All rights reserved.