其实要解决TableView的性能主要是理解其原理。
首先TableView本身是一个滑动窗口,并不会一次实例化好所有的Cell,因为内存消耗过大,比如tableView:numberOfRowsInSection:返回1000,总不能实例化1000个CellView吧,这就是楼主说的第二个问题:Cell重用机制——一定要重用,且一定要正确的重用
Cell重用之后TableView就只实例化那么几个屏幕可见的CellView(例如5个),当用户滑动时反复的调用tableView:cellForRowAtIndexPath:来变更这几个CellView上的内容以达到滑动效果(还有几个其他的方法可以自己打log查看)。
所以对于滑动性能分析,楼主无需工具,只需自己NSLog一下方法执行时间即可完成滑动性能分析。
同样要解决滑动性能问题,只要保证这几个方法中的执行足够快即可:要尽可能的优化,所有无关逻辑都尽量扔出去。
关于常见场景:大IO、复杂算法、大量创建对象、大量添加View等等都有可能消耗性能。不过常见的case一般都是IO,比如楼主说的下载图片。
除了使用异步下载之外,还需要注意异步下载的状态,因为建立连接也是需要消耗资源的,虽非当前线程资源,但整个设备的资源依然是有限的,如果你同时建立上百个异步下载连接(例如用户滑动经过了上百条Cell),系统也会卡顿,这也是需要注意的