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)
     
  • 相关阅读:
    牛客 小a与星际探索 bfs
    gear gym 思维题
    dp Surf
    P1280 尼克的任务
    Codeforces Round #539 (Div. 2) C. Sasha and a Bit of Relax
    Codeforces Round #542 C. Connect 搜索
    Layui 文件上传 附带data数据
    Layui 隐藏左侧菜单
    Layui 关闭当前标签页
    Layui Iframe页面间 方法的相互调用
  • 原文地址:https://www.cnblogs.com/shorfng/p/5124390.html
Copyright © 2011-2022 走看看