• DrawRect 内存问题


    DrawRect实现画板将会大量产生内存问题。

    具体请看:http://bihongbo.com/2016/01/03/memoryGhostdrawRect/

     

    可能的原因有两个:

     

    一是在手指绘制的过程中创建的大量点对象没有及时释放或者其他资源没有及时释放。

    二是系统在绘制的过程中开始大量消耗内存。

     

    最合理的办法处理类似于画板这样画线条的需求直接用专有图层CAShapeLayer。让我们看看它是什么:

    CAShapeLayer是一个通过矢量图形而不是bitmap来绘制的图层子类。用CGPath来定义想要绘制的图形,CAShapeLayer会自动渲染。它可以完美替代我们的直接使用Core Graphics绘制layer,对比之下使用CAShapeLayer有以下优点:

    • 渲染快速。CAShapeLayer使用了硬件加速,绘制同一图形会比用Core Graphics快很多。
    • 高效使用内存。一个CAShapeLayer不需要像普通CALayer一样创建一个寄宿图形,所以无论有多大,都不会占用太多的内存。
    • 不会被图层边界剪裁掉。
    • 不会出现像素化

    总结一下绘制性能优化原则:

    • 1.绘制图形性能的优化最好的办法就是不去绘制。
    • 2.利用专有图层代替绘图需求。
    • 3.不得不用到绘图尽量缩小视图面积,并且尽量降低重绘频率。
    • 4.异步绘制,推测内容,提前在其他线程绘制图片,在主线程中直接设置图片。
  • 相关阅读:
    编译问题----宏定义一定显示未定义
    低级错误记录-程序更新后,没有显示想要的结果
    云编译的优点-普及云编译
    telecommunication communication 的区别
    学习EPC架构演进历史知识
    EOF与feof的区别
    epoll惊群问题-解决思路
    epoll多路复用机制的学习
    进程组与组长进程
    记录博客开始
  • 原文地址:https://www.cnblogs.com/pengsi/p/5357869.html
Copyright © 2020-2023  润新知