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 光栅数据在内存中增长
我发现了问题,这是我的错误逻辑,我使用 2 个视图,一个用于显示,另一个用于处理 ex:调整大小、移动、旋转。每次我向两个视图添加子视图时,其中一个视图一次只需要保存 1 个子视图,这很简单:
for (UIView *view in 2cndView.subviews)
{
[view removeFromSuperview];
}
Run Code Online (Sandbox Code Playgroud)
对我有用