1.2 Quartz 2D 内存管理

本文并非最终版本,如有更新或更正会第一时间置顶,联系方式详见文末
如果觉得本文内容过长,请前往本人 “简书
 
通过 Product -> Analyze 来进行静态分析

 
  • 可以使用Quartz 2D的函数来指定retain和release一个对象。例如,如果创建了一个CGColorSpace对象,则使用函数CGColorSpaceRetain和CGColorSpaceRelease来retain和release对象。
  • 也可以使用Core Foundation的CFRetain和CFRelease。注意不能传递NULL值给这些函数
 
 
使用Path 对象时的内存管理问题:
1、凡是遇到 retain 、 copy 、 create 函数创建出的对象, 使用完后都需要进行 release,否则将导致内存泄露
2、但是CGPathCreateMutable( )不是 OC 方法, 所以不是调用某个对象的 release方法
3、CGXxxxxCreate 对应的就有 CGXxxxxRelease。
4、通过 CFRelease(任何类型);可以释放任何类型。
 
 
示例代码:
 1 - (void)drawRect:(CGRect)rect
 2 {
 3     // 1.获取上下文(layer)
 4     CGContextRef ctx = UIGraphicsGetCurrentContext();
 5 
 6     // 2.拼接路径
 7     CGMutablePathRef path = CGPathCreateMutable();
 8     CGPathMoveToPoint(path, NULL, 50, 50);
 9     CGPathAddLineToPoint(path, NULL, 100, 100);
10 
11     // 3.把路径添加到上下文当中
12     CGContextAddPath(ctx, path);
13 
14     // 4.渲染
15     CGContextStrokePath(ctx);
16 
17     // 释放
18     CGPathRelease(path);  //方法1
19     CFRelease(path);      //方法2
20 }

 


如有疑问,请发送邮件至 shorfng@126.com 联系我。
 
By:蓝田(Loto)
 
posted @ 2016-01-12 15:12  蓝田_Loto  阅读(286)  评论(0编辑  收藏  举报