iOS开发之 tableView 优化

UITableView最核心的思想就是UITableViewCell的重用机制。简单的理解就是:UITableView只会创建一屏幕(或一屏幕多一点)的UITableViewCell,其他都是从中取出来重用的。每当Cell滑出屏幕时,就会放入到一个集合(或数组)中(这里就相当于一个重用池),当要显示某一位置的Cell时,会先去集合(或数组)中取,如果有,就直接拿来显示;如果没有,才会创建。这样做的好处可想而知,极大的减少了内存的开销。

举个例子来说:如果现在要显示100个Cell,当前屏幕显示5个。那么刷新 dUITableView时,UITableView会先调用100次tableView:heightForRowAtIndexPath:方法,然后调用5次tableView:cellForRowAtIndexPath:方法;滚动屏幕时,每当Cell滚入屏幕,都会调用一次tableView:heightForRowAtIndexPath:、tableView:cellForRowAtIndexPath:方法。

优化主要从三个方面入手:

• 提前计算并缓存好高度(布局),因为heightForRowAtIndexPath:是调用最频繁的方法。

• 异步自定义绘制,遇到复杂界面,遇到性能瓶颈时,可能就是突破口。

• 滑动时按需加载,这个在大量图片展示,网络加载的时候很管用!(SDWebImage已经实现异步加载,配合这条性能杠杠的)。


除了上面最主要的三个方面外,还有很多几乎大伙都很熟知的优化点:

• 正确使用reuseIdentifier来重用Cells 

• 尽量使所有的view opaque,包括Cell自身 

• 尽量少用或不用透明图层

• 如果Cell内现实的内容来自web,使用异步加载,缓存请求结果

• 减少subviews的数量

• 在heightForRowAtIndexPath:中尽量不使用cellForRowAtIndexPath:,如果你需要用到它,只用一次然后缓存结果

• 尽量少用addView给Cell动态添加View,可以初始化时就添加,然后通过hide来控制是否显示

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容