CGColorSpaceRef和CGGradientRef 的内存泄露

原创 2016年05月31日 17:17:35
-(void) createDefaultBrushTexture{
    UIGraphicsBeginImageContext(CGSizeMake(64, 64));
    CGContextRef defBrushTextureContext = UIGraphicsGetCurrentContext();
    UIGraphicsPushContext(defBrushTextureContext);

    size_t num_locations = 3;
    CGFloat locations[3] = { 0.0, 0.8, 1.0 };
    CGFloat components[12] = { 1.0,1.0,1.0, 1.0,
        1.0,1.0,1.0, 1.0,
        1.0,1.0,1.0, 0.0 };
    CGColorSpaceRef myColorspace = CGColorSpaceCreateDeviceRGB();
    CGGradientRef myGradient = CGGradientCreateWithColorComponents (myColorspace, components, locations, num_locations);

    CGPoint myCentrePoint = CGPointMake(32, 32);
    float myRadius = 20;

    CGContextDrawRadialGradient (UIGraphicsGetCurrentContext(), myGradient, myCentrePoint,
                                 0, myCentrePoint, myRadius,
                                 kCGGradientDrawsAfterEndLocation);

    UIGraphicsPopContext();

    [self setBrushTexture:UIGraphicsGetImageFromCurrentImageContext()];

    UIGraphicsEndImageContext();
}
解决方案:

Ok lets look at colorspace and see what the problem is. myColorspace is created CGColorSpaceCreateDeviceRGB retain count +1 and then never released. This is unbalanced and it needs to be released at the end. Add a CGColorSpaceRelease(myColorSpace);

"potential leak of an object stored into myGradient"

Same problem, creation with retain count +1, with no corresponding release. Add a CGGradientRelease(myGradient);



相关文章推荐

渐变 CGGradient

颜色渐变指从一种颜色向另一种颜色的过渡,颜色渐变分为两种:线性渐变和径向渐变 Quartz提供了CGGradient类和CGShading类以支持颜色渐变。 CGGradientRef...

iOS高级工程师晋级之路

转载自:https://www.zhihu.com/question/39597307/answer/82285626 iOS高级工程师是怎么进阶的? 我从事iOS 两年了,感觉只会搭建...

iOS开发:获取矩形渐变色的UIImage

/** * 获取矩形的渐变色的UIImage(此函数还不够完善) * * @param bounds UIImage的bounds * @param colors ...

iOS实现UIView渐变的几种方法以及实现渐变透明功能

我们经常需要把UIView的背景色设置为渐变色,虽然找一张渐变的背景图很方便,但是图片是要占用资源的,所以我们最好使用代码来实现效果。 1. CAGradientLayer实现渐变 CAGr...

IOS如何生成一枚精美的像素按钮

首先真是惭愧哦,近期楼主懒得真是令人发指,导致好久都没有来csdn这片净土上来陶冶情操了。今天终于勤奋小人打败了懒惰小人,给大家带来一篇关于UI方面的笔记,由于楼主对UI方面的感觉实在是太差,所以整理...

ios创建两色线性径向渐变扇形

设计:创建一个扇形遮罩,再创建一个两色径向渐变圆,用扇形遮罩去剪切径向渐变圆,就得到一个两色线性径向渐变扇形. 一.先创建一个扇形遮罩.(里面的函数代码什么意义,按住command,点函数名就可进去看...

CGMutablePathRef详解

绘图第四篇:CGMutablePathRef 第四种,利用路径来绘制图形,下边照常是我给的demo截图及效果: 效果图:...

Android 内存泄露

  • 2015年03月13日 11:52
  • 77KB
  • 下载

android性能优化之内存泄露

  • 2017年10月13日 15:31
  • 2.73MB
  • 下载

HBASE内存泄露读文件失败的问题

2016-12-28 04:04:58,586 INFO  [RS_OPEN_REGION-slave1:16020-2] regionserver.HRegion: Replaying edits ...
  • Yuli_li
  • Yuli_li
  • 2016年12月29日 16:38
  • 973
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:CGColorSpaceRef和CGGradientRef 的内存泄露
举报原因:
原因补充:

(最多只允许输入30个字)