我有几个数组,我试图清除所有对象,但使用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];
这就是我所做的一切,我无法弄清楚为什么它会一直崩溃...如果数组中只有一个对象它可以正常工作,否则会崩溃
非常感谢任何帮助!!
答案 0 :(得分:1)
这很可能是因为您没有在阵列包含的其中一个对象上正确管理内存。从数组中删除对象时,其保留计数会减少一次。
您可以在清除数组的行上放置一个断点,并使用调试器查看其中的哪个对象无效。
答案 1 :(得分:0)
ballArray = [[NSMutableArray alloc] init];
ballVelocityArray = [[NSMutableArray alloc] init];
在分配对象之后,你也在dealloc函数中释放对象或在其他地方检查这个。如果你这样做,那么我想通知你
[ballArray removeAllObjects];
[ballVelocityArray removeAllObjects];
removeAllObjects不仅删除了数组的所有对象,而且还从内存中释放了数组对象,因此,如果再次发布数组对象,则内存指针将在-1处到达,应用程序将崩溃。
因此,请确保您没有释放已使用的数组对象
[ballArray removeAllObjects];
[ballVelocityArray removeAllObjects];
功能