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退出,没有任何输出
答案 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。一旦我这样做,它对我有用。只试一次。