VM:CG光栅数据内存不断增长

ske*_*.MI 5 xcode memory-management core-graphics ios

所以我正在尝试制作一个应用程序,让用户更改 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;
}
Run Code Online (Sandbox Code Playgroud)

一切正常,但 CG 光栅数据在内存中增长在此处输入图片说明

ske*_*.MI 0

我发现了问题,这是我的错误逻辑,我使用 2 个视图,一个用于显示,另一个用于处理 ex:调整大小、移动、旋转。每次我向两个视图添加子视图时,其中一个视图一次只需要保存 1 个子视图,这很简单:

  for (UIView *view in 2cndView.subviews)
  {
    [view removeFromSuperview];
  }
Run Code Online (Sandbox Code Playgroud)

对我有用