作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 CGBitmap 上下文,其中保存了在屏幕上绘制的所有内容。当我按下一个名为 reset 的按钮时,我希望 UIView 中绘制的所有内容都被删除。如果将 cacheBitmap 和缓存上下文都设置为 nil,它将清除 View ,但是会导致内存泄漏,因为我没有释放它们。然而,调用 free 和 CFRelease 确实会导致内存泄漏消失,但 View 不会被清除。有什么方法可以在防止内存泄漏问题的同时清除 View ?
// init method
cacheBitmap = malloc( bitmapByteCount );
if (cacheBitmap == NULL){
return NO;
}
CGBitmapInfo bitmapInfo = kCGImageAlphaPremultipliedFirst | kCGBitmapByteOrder32Little;
colorSpace = CGColorSpaceCreateDeviceRGB();
cacheContext = CGBitmapContextCreate (cacheBitmap, size.width*scaleFactor, size.height *scaleFactor, 8, bitmapBytesPerRow, colorSpace, bitmapInfo);
CGContextScaleCTM(cacheContext, scaleFactor, scaleFactor);
CGContextSetRGBFillColor(cacheContext, 0, 0, 0, 0.0);
CGContextFillRect(cacheContext, (CGRect){CGPointZero, CGSizeMake(size.height*scaleFactor, size.width*scaleFactor)});
return YES;
}
-(void)clear{
cacheContext = nil;
cacheBitmap = nil;
CGContextRelease(cacheContext);
free(cacheBitmap);
CGColorSpaceRelease(colorSpace);
[self initContext:framsize];
[self setNeedsDisplay];
}
最佳答案
一旦您完成了对上下文的处理,您应该尝试调用 UIGraphicsEndImageContext()
。
关于ios - 如何在不导致内存泄漏的情况下清除 CGBitMapContext?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23456673/
我是一名优秀的程序员,十分优秀!