我正在编写一个计算雅可比算法的程序。它是用Objective-C编写的,因为它在Mac上运行,但大多数是用标准C编写的。我使用的是二维C数组和NSArray
包含5个NSTextField
标签。
以下代码产生EXC_BAD_ACCESS
错误:
for ( int i = 0; i < 5; i++ ) {
NSString *resultString = [NSString stringWithFormat:@"%g", matrix[i][i] ];
[[resultLabels objectAtIndex:i] setStringValue:resultString]; // error line
}
任何帮助?
这是我init
resultLabels
:
resultLabels = [[NSArray alloc] initWithObjects:result11, result22, result33, result44, result55, nil];
答案 0 :(得分:1)
如果您在该行上收到错误,则会释放resultsLabels
或i
处的对象。
答案 1 :(得分:1)
最有可能的是,您正在引用已发布的对象。您的NSArray或objectAtIndex:那时是否为零?你能展示实例化这些对象的线吗?
答案 2 :(得分:1)
这不是你的破坏者的来源,但%g
格式代码是双打而不是整数;你想要%d。
数组中的项目将由数组自动保留(Foundation集合中的对象始终由集合保留),因此您不需要向它们发送额外的-retain
消息。因此,似乎resultLabels
可能会在崩溃发生之前的某个地方被释放。