最近空窗期,有了angularJS的基础,学习了小程序没那么费事,闲来把以前的一个项目做了下性能优化,以下是做的处理
- instruments
1、Time Profiler,查看程序哪些部分最耗时
2、Leaks,查看内存是否泄漏
3、Allocation,查看内存分配
4、Core Animation,打开Color Blended Layers,所有红的都是降低fps的敌人,能改则改(opaque设置为YES,给个背景颜色)
- 不要阻塞主线程
请求数据等做耗时动作,放在子线程
cache
减少程序启动过程中的任务
使用合适的数据结构
对数组、字典进行安全封装
懒加载view
尽量把views设置为不透明,设置它们的opaque属性为YES
优化Table View
1.正确使用reuseIdentifier来重用cells
2.尽量使所有的view opaque,包括cell自身
3.避免渐变,图片缩放,后台选人
4.缓存行高
5.如果cell内现实的内容来自web,使用异步加载,缓存请求结果
6.使用shadowPath来画阴影
7.减少subviews的数量
8.尽量不使用cellForRowAtIndexPath,如果你需要用到它,只用一次然后缓存结果
9.使用正确的数据结构来存储数据
10.使用rowHeight, sectionFooterHeight和 sectionHeaderHeight来设定固定的高,不要请求delegate
- 合理获取图片
1.imageNamed(会缓存),图片反复重用
2.imageWithContentsOfFile,加载一个大图片而且是一次性使用
- 缓存cell的layer,优化tableView性能
cell.layer.shouldRasterize = YES;
cell.layer.rasterizationScale = [UIScreen mainScreen].scale;
cell.layer.drawsAsynchronously = YES;