1,�业务场景,
tableview点击cell后,过很久才响应进入详情页,之前一直忙于开发,也没时间管这块,而且这块功能维护的人过多,所以具体也不知道是谁加了什么后导致的卡顿,所以一直没处理这个问题,不过却一直是我们的心头痛,最近相对不忙了些后终于要解决这块了。
2,初步分析
可能的原因:
1.点击后,过很久才响应,也就是是从我的手指点击到didSelect方法执行,需要较长时间
2.viewDidLoad方法中在主线程进行了过多的耗时操作
3,viewWillAppear��方法中在主线程进行了�过多耗时操作
3,着手排除原因
1,把跳转的代码注释掉,直接在didSelect中提示消息就行了,发现每次一点击就提示消息,所以原因1排除
2,在DidSelect ,viewDidLoad,viewWillAppear,viewDidAppear,�方法开始和结束分别时间,发现在viewDidLoad中�从开始到结束竟然长达2S!这在高性能的iphone身上是不能忍的问题,于是开始分析viewDidload方法中的耗时操作
4,找到响应慢的原因
对viewDidLoad中的各种方法进行检测了,发现最耗时的是下面这个,
29B032B1-42B2-472B-81EA-B97E83327138.png
去函数中仔细查看,最后把问题�定位到其中一个函数上:
0930970B-396F-43E5-96E2-08259813AED2.png
原来是大量的图片加载放在了viewDidload的时候在主线程中执行,但是是IO操作肯定是比较耗时的,而且这里还是大量的重复操作。
5,解决问题
将图片的加载放在异步线程,然后主线程reloadData,修改完毕后执行,然后首次进入详情页的响应速度明显变快,问题解决。
后记
�性能调优的地方可以很多,这里只是记录自己一次的调优经历,这次是根据代码的经验,一些判断,加上时间的比较就解决了,当然还有instrument工具的使用,对于调试是很方便的,以前也帮助我解决了一个很难解决的问题,有时间的话也会写出来跟大家分享。
网友评论