当在NSMutableArray上调用replaceObject时EXC_BAD_ACCESS
问题描述:
我试图替换NSMutableArray中的对象。在我班的其他地方,我成功地做到了。下面是代码失败的一个例子。当在NSMutableArray上调用replaceObject时EXC_BAD_ACCESS
NSNumber* newObject = [NSNumber numberWithDoulble:myCalculation];
NSLog(@"Old object at 12:%@",[myMisbehavingArray objectAtIndex:12];
[myMisbehavingArray replaceObjectAtIndex:12 withObject:newObject];
我在的NSLog声明扔确保myMisbehavingArray指着东西,它是,但是当我运行程序我在replaceObjectAtIndex方法的角度得到一个EXC_BAD_ACCESS。
任何想法?
答
我写这些博客文章,以帮助人们调试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可能指向一个数组,但还有许多其他指针参与其中。
如果你能够以一种非常简单的方式可靠地重现问题,这行代码就像一个堆腐败检测器。你可以移动它,看看它崩溃的地方,以及它不会试图缩小事情变坏的地方。
更硬,更可靠的方法,是使民警卫队的malloc,然后使用调试器来打开额外的检查:
那么,什么是你用它之前在做什么?另外,它是一个本地变量还是伊娃?它是如何初始化的,等等。 – 2010-07-22 19:42:17