NSMutableArray *array  //有54个图片
-(void) clearsome
{
int i;
UIImageView *image;
for(i=0;i<54;i++)
{
image=[array objectAtIndex:i];
[image removeFromSuperview];
[image release];
image =nil;  //可有可无吧?
}
[array removeAllObjects];    //为什么运行到这就崩溃了。找了很久都没找到原因
[array release];
}

解决方案 »

  1.   

    [image removeFromSuperview];
    是不是已经释放了, 再[array removeAllObjects]; 的话 相当于重复释放呢? 重复释放会有这样的问题
      

  2.   

    我的array
    -(void) ready
    {
    array=[[NSMutableArray alloc] init];
    int i;
    for(i=0;i<54;i+=)
    {
    UIImageView *image=[[UIImageView alloc] initWithImage://图片];
    image.frame=CGRectMake(160+i*2,100,71,96);
    [array addObject:image];
    [self.view addSubview:image];
    [image release];
    }
    }
      

  3.   

    [image removeFromSuperview];
    只是不显示,没有释放啊
      

  4.   

    array中存储的是指针,这些imageview的指针是alloc出来的,当alloc的时候,指针的计数器是1,加入到array的时候,计数器就会加一,变成2,你是不是在加入后就release了一次,这个时候,计数器变成1,你这里又使用image=[array objectAtIndex:i];
    [image release];
    那么这个时候指针的计数器为0,调用array removeAllObjects]; 会把array中所有的指针计数器减一,那么就会崩溃了。
    总之,你看一下,你在生成这些指针的时候,加入array后是不是调用代码release了?
      

  5.   

    [image release];
    拿掉就好