NSMutableArray removeAllObjects导致崩溃

时间:2011-10-21 07:09:44

标签: iphone ios arrays nsmutablearray

我有几个数组,我试图清除所有对象,但使用removeAllObjects崩溃应用程序并返回sigabrt。在我的研究过程中,我发现尽管我正在创建NSMutableArrays,但我可能正在创建一个NSArray的实例,但我不确定我是否正在这样做......以下是我对数组所做的一切

ballArray = [[NSMutableArray alloc] init];

ballVelocityArray = [[NSMutableArray alloc] init];

[ballArray addObject:MyUIImageView];

[ballVelocityArray addObject:[NSValue valueWithCGPoint:myCGPoint]];

[ballVelocityArray replaceObjectAtIndex:SomeIndex withObject:[NSValue valueWithCGPoint:NewVelocity]];

[ballArray removeAllObjects];

[ballVelocityArray removeAllObjects];

这就是我所做的一切,我无法弄清楚为什么它会一直崩溃...如果数组中只有一个对象它可以正常工作,否则会崩溃

非常感谢任何帮助!!

2 个答案:

答案 0 :(得分:1)

这很可能是因为您没有在阵列包含的其中一个对象上正确管理内存。从数组中删除对象时,其保留计数会减少一次。

您可以在清除数组的行上放置一个断点,并使用调试器查看其中的哪个对象无效。

答案 1 :(得分:0)

ballArray = [[NSMutableArray alloc] init];

ballVelocityArray = [[NSMutableArray alloc] init];

在分配对象之后,你也在dealloc函数中释放对象或在其他地方检查这个。如果你这样做,那么我想通知你

[ballArray removeAllObjects];

[ballVelocityArray removeAllObjects];

removeAllObjects不仅删除了数组的所有对象,而且还从内存中释放了数组对象,因此,如果再次发布数组对象,则内存指针将在-1处到达,应用程序将崩溃。

因此,请确保您没有释放已使用的数组对象

[ballArray removeAllObjects];

[ballVelocityArray removeAllObjects];

功能