致谢
首先我没有想到前几天写的文章(内存恶鬼drawRect)会有这么多人关注,感谢大家的各种肯定和建议,谢谢大家。另外感谢@唐巧在公众号上发布本文,还要感谢各位同学的转发分享。
答疑
我的这篇拙作是因为同事辉哥的离职让我想起来去把当初和他解决的比较有意思的问题梳理总结一下,写的并不甚完美,通过公众号的回复和微博的回复私信等等,我收集了读者大大们的问题,对这些问题我会以我的能力一一尝试解答,如果有错误的地方还请不吝指出。
首先我没有想到前几天写的文章(内存恶鬼drawRect)会有这么多人关注,感谢大家的各种肯定和建议,谢谢大家。另外感谢@唐巧在公众号上发布本文,还要感谢各位同学的转发分享。
我的这篇拙作是因为同事辉哥的离职让我想起来去把当初和他解决的比较有意思的问题梳理总结一下,写的并不甚完美,通过公众号的回复和微博的回复私信等等,我收集了读者大大们的问题,对这些问题我会以我的能力一一尝试解答,如果有错误的地方还请不吝指出。
标题有点吓人,但是对于drawRect
的评价倒是一点都不过分。在平日的开发中,随意覆盖drawRect
方法,稍有不慎就会让你的程序内存暴增。下面我们来看一个例子。
去年的某天午后,北京的雾霾依旧像现在这样醇厚,我的同事辉哥像往常一样与我楼下约烟。我见辉哥表情凝重,便询问究竟。辉哥做了一个画板功能,但是苦于内存问题一直得不到解决。画板功能很简单,就是记录手指触摸的轨迹然后绘制在屏幕上。下面我们来看一张效果图:
如图我们看到左侧内存的状况随着手指的绘制逐渐恶化。另外细心的同学可以观察到,点击图中蓝色矩形按钮之后,便会弹出画板,而这时并没有进行任何的手指绘制,内存就突变为114MB
,然后每当手指绘制开始时,内存立即增加到300MB
左右稳定下来。对于正常的iOS App
来讲,这么大的内存消耗是不能容忍的。
新浪微博中的“加号按钮”点击后的弹出动画很有意思,每当一个人孤单寂寞冷的时候总会不停的点这个动画,终于忍不住自己撸了一个。废话不多说,直接上效果图:
1 |
|
源代码请前往我的github