-1

这是代码:

-(void)initView
{
        increaseImage = [[[UIImageView alloc] initWithFrame:CGRectMake(277, 189, 511, 406)]autorelease];
         ..
         ..
         increaseImage.image = [UIImage imageNamed:[imgarray lastObject]];
         ..
         ..
}


-(void)cleanUpView
{

    if(increaseImage)
    {
        if([increaseImage superview]!=nil )
            [increaseImage removeFromSuperview];    //Crashes Here

        increaseImage = nil;
    }
}

removeFromSuperview 行中的崩溃..如何避免崩溃?

注意: 不使用 ARC 我只想解决自动释放的问题..为什么崩溃......它适用于其他对象。使用了很多视图,因此很难更改自动发布。所以希望找到正确的理由..

4

2 回答 2

2

autorelease在如下分配时间删除increaseImage..

替换这一行

increaseImage = [[[UIImageView alloc] initWithFrame:CGRectMake(277, 189, 511, 406)]autorelease];

带波纹管

increaseImage = [[UIImageView alloc] initWithFrame:CGRectMake(277, 189, 511, 406)];
于 2013-08-01T13:09:38.440 回答
1

请尝试这样:

-(void)initView
 {
        increaseImage = [[UIImageView alloc] initWithFrame:CGRectMake(277, 189, 511, 406)];
         ..
         ..
        increaseImage.image = [UIImage imageNamed:[imgarray lastObject]];
         ..
         ..
 }


-(void)cleanUpView
 {

   if(increaseImage)
   {
      if([increaseImage superview]!=nil )
        [increaseImage removeFromSuperview];    
        [increaseImage release];  // release here instead of autorelease
        increaseImage = nil;
   }
 }
于 2013-08-01T13:44:49.427 回答