我有这个代码:

// .m
- (void)viewDidLoad {
    NSMutableArray *array = [[NSMutableArray alloc] init];
    [self addToArray];
}

- (void)addToArray {
    NSString *stringA;
    [stringA isEqualToString:@"door"];
    NSString *stringB;
    [stringB isEqualToString:textField.text];
    [array addObject:stringA];
    if ([stringA isEqual:stringB]) {
        [stringA isEqual:nil];
        [tableView reloadData];
    } else {
        [array addObject:stringB];
        [tableView reloadData];
    }
}

当我调用方法addToArray时,它会不断向我返回一个名为Thread 1: Program recived signal "EXC_BAD_ACCESS"的错误,调试器的输出显示为:Single stepping until exit from function objc_msgSend, which has no line number information.行的[self addToArray]。关于如何解决的任何想法?我已经浪费了很多时间,请帮帮我!

最佳答案

正如其他人所说,array应该是在.h文件中声明的实例变量或类的属性:

@property (strong) NSMutableArray *array;

或者,没有ARC:
@property (retain) NSMutableArray *array;

现在,您在实现文件中添加了@synthesize array;,可以从任何地方访问它。然后,您可以执行以下操作:
- (void) viewDidLoad
{
    self.array = [[NSMutableArray alloc] init];
    [self addToArray];
}

您似乎假设isEqualToString进行了分配。不会,它会检查字符串(文本)是否相等。尝试这个:
- (void) addToArray
{
    NSString *stringA = @"door";
    NSString *stringB = textField.text;
    [array addObject: stringA];
    if (![stringA isEqualToString: stringB])
        [array addObject: stringB];
    [tableView reloadData];
}

07-24 09:36