-
把view设置为不透明,不透明的Views应该设置它们的opaque属性为YES。默认为 YES。
a) 如果视图存在半透明会导致在GPU里边最后合成像素颜色的时候获取多个图层的颜色进行混合,处于半透明中的每个像素都会执行颜色计算操作,浪费资源。 -
对于仅使用一次或是使用频率很低的大图片资源不要使用UIImage(named: "")而使用UIImage(contentsOfFile: "")
a) UIImage(named: "")返回的对象会保存在缓存中,只有退出程序才会释放内存;但下一次调用快。
b) UIImage(contentsOfFile: "")返回的对象不会保存在缓存中,一旦对象销毁就会释放内存。 -
基于颜色创建纯色的图片时,只需要创建出宽和高均为1px大小的图像就够了
-
在自定义的UIView子类中,利用drawRect:方法进行绘制改为CAShapeLayer
a) 自定义drawRect会使APP消耗大量的内存,视图越大,消耗的越多
b) 大部分情况下,绘制需求都可以通过CAShapeLayer实现,CAShapeLayer属于CoreAnimation框架,通过GPU来渲染图形,节省性能。
c) 动画渲染直接提交给手机GPU,不消耗内存渲染快速。
d) CAShapeLayer使用了硬件加速,绘制同一图形会比用Core Graphics快很多。 -
在Image Views中尽量保证图片的大小和UIImageView的大小相同,在运行中缩放图片是很耗费资源的
a) 如果要修改大小可以在后台线程中修改大小并解码、绘制。 -
重用和延迟加载(lazy load) Views
-
大图分片加载
a) 苹果demo -
大量局部变量使用自动释放池
网友评论