我正在尝试替换NSMutableArray中的对象。在我班上的其他地方,我成功地做到了。下面是代码失败的示例。
NSNumber* newObject = [NSNumber numberWithDoulble:myCalculation];
NSLog(@"Old object at 12:%@",[myMisbehavingArray objectAtIndex:12];
[myMisbehavingArray replaceObjectAtIndex:12 withObject:newObject];
我投入了NSLog语句,以确保myMisbehavingArray指向某个东西而且它是,但是当我运行程序时,我在replaceObjectAtIndex方法点获得了一个EXC_BAD_ACCESS。
任何想法?
答案 0 :(得分:0)
我写了这些博客条目来帮助人们调试EXC_BAD_ACCESS
http://loufranco.com/blog/files/Understanding-EXC_BAD_ACCESS.html
http://loufranco.com/blog/files/debug-iphone-crash-EXC_BAD_ACCESS.html
当你做一些无害的导致EXC_BAD_ACCESS的事情时,你很可能在此之前损坏了堆。 myMisbehavingArray可能指向一个数组,但还有许多其他指针。
如果您能够以非常简单的方式可靠地重现问题,那么这行代码就像堆损坏检测器。你可以移动它,看看它崩溃的地方,以及它不会试图缩小事情变坏的地方。
更难但更可靠的方法是启用Guard Malloc,然后使用调试器打开额外的检查: