VM:CG栅格数据存储器不断增长

时间:2014-12-25 12:56:47

标签: ios xcode memory-management core-graphics

所以我想创建一个让用户改变UIImage颜色的应用程序,因为我正在使用我发现的这个功能

 - (UIImage *)imageWithTintColor:(UIColor *)color fraction:(CGFloat)fraction
{
    if (color)
    {
        UIImage *image;
        if ([UIScreen instancesRespondToSelector:@selector(scale)])
        {
            UIGraphicsBeginImageContextWithOptions([self size], NO, 0.f);
        }
        else
       {
           UIGraphicsBeginImageContext([self size]);
       }

       CGRect rect = CGRectZero;
       rect.size = [self size];
       [color set];
       UIRectFill(rect);

       [self drawInRect:rect blendMode:kCGBlendModeDestinationIn alpha:1.0];

       if (fraction > 0.0)
       {
           [self drawInRect:rect blendMode:kCGBlendModeSourceAtop alpha:fraction];
       }
       image = UIGraphicsGetImageFromCurrentImageContext();
       UIGraphicsEndImageContext();
       return image;
   }
   return self;
}

一切正常,但CG栅格数据在内存中增长enter image description here

2 个答案:

答案 0 :(得分:0)

我发现了问题,这是我的错误逻辑,我使用2个视图来显示,一个使用ex:resize,move,rotate。每当我将子视图添加到其中一个人一次只需要保持1个时,一个简单的:

  for (UIView *view in 2cndView.subviews)
  {
    [view removeFromSuperview];
  }

为我做了伎俩

答案 1 :(得分:0)

我一直在用我的应用程序进行战斗,一段时间后突然无法正常启动。事实证明,当我在Image资源文件中将许多图像“Render as”切换为Template时,它会导致该应用完全爆炸。 CG Raster Data呈指数增长,最终导致应用停止,Xcode刚刚说了

  

与iPhone失去联系..检查连接等

看起来在每次启动时,图像都会被重新处理这个“模板”设置,这会消耗掉令人厌恶的RAM,实际上让它无法启动。为了解决这个问题,我降低了图像的分辨率 - 就这么简单。