iOS性能最佳实践之--保证页面流畅性的检查清单

避免滑动时加工数据

网络接口回来的数据有时需要进行字符串拼接、时间格式转换等销毁CPU的操作。这种场景可以在后台线程进行数据加工,然后将加工后的数据存放到ViewModel。当列表滑动的时候,不需要在单独做计算。

计算高度耗时较长时,将高度进行缓存

建议使用”UITableView+FDTemplateLayoutCell“。

使用Cell的复用机制

此处不需要解释

复用Cell内的子视图

有些开发者确实是使用了cell的复用机制,但是每次复用时由于子视图有一些差异,会把Cell里子视图释放掉,再重新初始化需要的子视图。这种做法是非常消耗CPU的,子视图也要尽量复用。

使用隐藏而不是移除

移除一个子视图也是需要开销的。如果有一些子视图不需要显示,将其隐藏而不是移除。

到后台线程销毁视图

有大量视图需要销毁时,放到后台线程,减少主线程的资源消耗。

图片尺寸不要大于需要显示的布局

到后台线程图片解码

加载图片时,图片的解码需要消耗CPU的资源,而这部分是可以放到子线程处理的。(SDWebImage默认是在子线程解码的,除非你关了)

到后台线程图片绘制

CoreGraphic是线程安全的,使用CoreGraphic绘制图片可以在子线程做,绘制完再回主线程加载到要呈现的控件里

减少透明视图的混合

设置视图的opaque属性为True,减少视图的混合消耗GPU资源

手动计算布局,并缓存

特别复杂的Cell,Autolayout的布局消耗大量CPU资源。可以根据数据源手动计算frame并进行缓存,从而避免每次都重新计算布局。

Blacktea wechat
ex. subscribe to my blog by scanning my public wechat account
记录生活于感悟,您的支持将鼓励我继续创作!