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.异步绘制,推测内容,提前在其他线程绘制图片,在主线程中直接设置图片。

转载于:https://www.cnblogs.com/pengsi/p/5357869.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值