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)
     
  • 相关阅读:
    C++ 数字、string 简便互转
    【C语言】递归函数DigitSum(n)
    UVALIVE 4287 Proving Equivalences (强连通分量+缩点)
    【linux驱动分析】misc设备驱动
    C++ auto 与 register、static keyword 浅析
    spring 计时器
    Spring注解配置定时任务<task:annotation-driven/>
    去除ckeditor上传图片预览中的英文字母
    编码规范
    git 手动操作
  • 原文地址:https://www.cnblogs.com/shorfng/p/5124390.html
Copyright © 2011-2022 走看看