NSMutableArray removeAllObjects崩溃

时间:2011-03-03 01:22:17

标签: ios nsmutablearray

Car class
--------------
price
color

崩溃代码是:

NSMutableArray *list = [[NSMutableArray alloc] init];
Car *car = [[Car alloc] init];
car.price = 10;
car.color = 1;
[list addObject:car];

// some code

[list removeAllObjects]; // Crash here

为什么崩溃,我该如何解决呢。

app退出,没有任何输出

5 个答案:

答案 0 :(得分:5)

我不知道你所在细分市场的“someCode”部分有什么。您首先注释掉该代码并检查应用程序是否崩溃。如果它仍然崩溃,那么只考虑我在下面给出的内容。我的意思是,在进行变通方法之前,请确保您的代码没有任何问题:)

试试这段代码吧,看看它现在崩溃了。我知道它没有意义,但它也曾经发生在我身上。一旦数组计数为零,removeAllObjects就会崩溃。我怀疑那里的某个SDK bug :(

if([list count]){
     [list removeAllObjects];
}

答案 1 :(得分:2)

您很可能会多次释放阵列中的一个或多个对象。当NSMutableArray尝试释放该对象时,它会崩溃,因为该对象已被处理掉。

答案 2 :(得分:1)

我刚遇到同样的事情。在我的对象的dealloc方法中,我有:

-(void) dealloc
{   
   [super dealloc];// <--- le' culprit!
   [Image_ID release];
   [Image_Number release];
   [Image_UID release];
   [Series_ID release];
   [Series_UID release];
   [Study_UID release];  
                       // <--- it should be here...
}

我在所有版本下面移动了 [super dealloc] ..我的 [.... removeAllObjects] 工作得很好..

答案 3 :(得分:0)

猜测一下,我会说你在某个地方发布list,所以你对removeAllObjects的呼叫被发送到一个解除分配的实例。没有堆栈跟踪和一些更详细的信息是不可能确定的 - 它是EXC_BAD_ACCESS错误还是什么?

答案 4 :(得分:0)

在接口部分将数组属性设置为Retain。一旦我这样做,它对我有用。只试一次。