计算机最宝贵的资源就是CPU和内存,因此所谓的优化其实就是在”空间”和”时间”之间权衡。以空间换取更短的时间响应,表现在可能会增加额外的内存开销如:cell的重用、高度的缓存甚至布局的缓存等。
优化
1.cell的重用
注意重用可能导致的数据错乱问题。
2.提前计算好cell的高度并且缓存起来
UITableView代理方法的执行顺序:
系统会先调用numberOfRowsInSection来获取cell的行数,然后再多次(和numberOfRow正相关)调用heightForRow来确定contentSize及cell的位置,最后才会调用cellForRow显示当前屏幕的cell.
由于heightForRow会频繁的调用,因此该方法里一定不要进行大量重复的计算.所以cell的高度需要进行缓存,然后在heightForRow方法中直接返回.可采用的策略:网络请求完成后就计算好每个cell的高度,并缓存到对应的model中.更有甚者会在此时连cell的子视图布局都计算好.
cell的高度计算与缓存时效问题?