我有这个代码:
// .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];
}