把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大量局部变量使用自动释放池
iOS内存优化
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...