关于tableView的性能优化
来源:互联网 发布:游戏bgm知乎 编辑:程序博客网 时间:2024/05/06 06:37
总结一个ios中的性能优化:
1.tableView中的重用机制,尽量重用
2.cell内部有图片:此时需要异步加载图片,防止卡顿(此时的SDWebImage的每个cell中都创建一个子线程吗?)但是内部开启的线程过多也会影响主线程的性能
2.1.解决办法,在scrollerView的代理方法中,didEndDragging,didEndDeceleratiing方法中,才开始异步加载,其它时刻不进行加载
2.2.在didEndDragging,didEndDeceleratiing方法中实现方法:获取屏幕上显示出来的cell的indexPath数组,然后通过遍历indexPath的数组,在数据源中,如果已经加载了,就不需要再异步加载,反之进行异步加载,然后再cellForRow方法中也进行一次判断:当self.tableView.dragging == NO && self.tableView.decelerating == NO 的时候执行异步加载图片的方法
2.3.在didReceiveMemoryWarning方法中释放掉所有的子线程,防止在内存警告的时候被系统强制关闭
2.4.在dealloc方法中,使所有的delegate为nil
3.像素混合问题引起的性能问题:我用label显示的时候出现像素混合的问题,我有着一种追求代码优化的洁癖,我在用Instruments里的Core Animation的Color Blended Layers里面检测时发现label出现了像素混合的现象(出现的label状况为红色),然后我设置了label的masksToBounds为yes就解决了问题,关于这个,美工在企鹅图片的时候也最好不要切除透明的区域,这样在显示图片的时候也会出现像素混合
4.离屏渲染,可以结合instrument结合使用
4.1.在tableView中展示多张需要切圆形的图片,此时不要使用setCornerRadius的方法,这样耗损性能,我弄了一个UIImage的分类,用Core Graphics绘制圆角,然后返回图片,在SDWebImage处理我的分类返回的图片,并进行缓存。 检测结果:我用Instruments的Core Animation查看性能Color Offscreen-Rendered Yellow没有发现离屏现象,这样就解决了
5.UIImage:本地图片加载方式本地图片加载常用方法有两种:
5.1. [UIImage imageNamed:@"xx.png"] 图片多次使用时使用,需要使用此方式加入缓存
5.2. [[UIImage alloc] initWithContentsOfFile :@"xx.png"] 图片不常使用时,不使用缓存
6.如果控件是透明的,需要设置opaque为YES。参考:http://blog.csdn.net/songchunmin_/article/details/51125992
7.避免对象创建时过多消耗资源例如:日期处理,将保持日期对象全局唯一
8.性能检测静态分析APP:菜单-Product-Analyze可以定位未使用的变量,内存泄漏分析APP每个操作占用时间: Instruments-Time profiler。动态分析内存泄漏:Instruments-Leaks。
0 0
- 关于tableView的性能优化
- tableView的性能优化
- tableView的性能优化
- 关于tableview性能的优化及卡顿现象
- iOS TableView的性能优化
- 关于tableview 加载数据,性能优化
- TableView在iOS上的性能优化
- 优化TableView索引排序的性能
- (十七)TableView的本地性能优化
- TableView在iOS上的性能优化
- TableView 性能优化
- TableView 性能优化
- tableView cell性能优化
- tableView性能优化
- TableView性能优化
- TableView性能优化
- tableView 性能优化机制
- iOS性能优化-TableView
- C语言C Primer Plus总结(十九)--参考资料
- android 通过listview实现检索
- java总结
- $.ajax()方法详解
- 递归——生成格雷码(gray code)
- 关于tableView的性能优化
- iOS打印Debug日志的方式
- Java Web开发技术
- Android百分比布局
- Android之butterknife(懒人库)
- (原创) 工作流程图的树形展示-使用qunee插件实现
- 【Android】java生成炫酷验证码,不区分大小写。登陆,发送手机验证码,防止注册机,android开发
- ThreadLocal
- idea中Exception in thread "com.mchange.v2.async.ThreadPoolAsynchronousRunner