UITableView:
- 图片圆角处理,防止离屏渲染
- 提前缓存高度
地图:
- 点太多会卡顿,点聚合
图片
- 充分利用cache,缓存一些不容易改变,但是经常访问的数据
图片太大的话,可以分段加载。 - 可以设置位图规格可以减少内存大小
- 如果图片过大的时候,可以重置这些图片的大小,既能减小内存的开销,也能提高显示的效率。
- 设置图片位组件的大小,减小图片的分辨率,从而减小消耗的内存
策略:
压缩、增量、去重复
内存:
- 当有大量的临时图片或者是临时变量的时候,用@autoreleasepool进行释放。
- 资源性对象没有关闭(比如数据库对象)
- 观察者需要释放(观察者列表强持有着观察者对象)导致对象无法释放
- 酌情使用单利对象和静态对象
- 大的对象如果存储在集合中,如果集合对象不再需要了,就要即使释放,以免占用太多的内存。
内存log的使用:
- 写代码的时候在每个类的dealloc方法加上log,防止vc没有被释放。
- timer定时器也需要加上log。
控件:
- 懒加载,用到的时候才去加载
布局:
页面布局懒加载布局,按需加载布局,比方说登陆注册的view,不是一定都需要同时加载的。
数据:
- 耗时的非ui操作,需要开启自线程处理。
加载:
分布加载
延迟加载
异步加载
刷新优化:
减少刷新次数
缩小刷新区域
避免后台有高cpu线程运行
后台cpu开销过大:
如果后台cpu开销过大,会导致cpu的时间片紧张,也有可能导致页面卡顿。
比如:可以在页面滚动的时候,停止后台下载任务等。
地图页卡顿就是因为页面滚动的过程中在下载数据。cpu负担过重。
缩小刷新区域:
listview的单条更新。
或者只更新某个区域。传入区域的坐标点
动画性能提升:
- 帧动画
- 补间动画
- 属性动画
动画的性能从三个纬度来测量
- 流畅度:控制每一帧动画执行时间在16ms之内
- 避免内存泄漏,减少内存开销
- 减少耗电量,优化算法,减少cpu使用。
存储:
- 批量操作使用事务。
好处:1)修改都完成或者什么都没做,不会产生部分提交都结果,保证数据的同步。
2)显示创建事务可以缩短时间,不用每一次插入都创建事务提交事务。 - 使用索引
类似于联系人的首字母查找
索引不适合应用的地方:
- 在较小的表上
- 在有频繁的大批量更新或插入操作的表上
- 含有大量null列的表上
- 在频繁操作的列上
- 放到异步线程处理数据库操作
电量优化:
数据传输过程中数据压缩。
集合
集合里面Array类型,最好使用<objectType>来做数组里面的类型指定,
那样可以省去装箱和拆箱的操作,可以优化很多性能。
NSMutableArray<Animal *> *array = [NSMutableArray alloc];
指定了数组中的元素是Animal类型的。
网友评论