zoukankan      html  css  js  c++  java
  • 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)
     
  • 相关阅读:
    [UVA100] The 3n + 1 problem.题解
    [SP1] TEST
    LCA【模板】
    [P1000] 超级玛丽游戏.题解
    [P3367]【模板】并查集.题解
    并查集【模板】
    洛谷 P1890 【gcd区间】
    浅谈分块算法经典问题&优化
    Floyd算法详(cha)解
    逆序对
  • 原文地址:https://www.cnblogs.com/shorfng/p/5124390.html
Copyright © 2011-2022 走看看