UITableView 性能优化

1.正确使用reuseIdentifier来重用Cells (重用标识符用static修饰,只创建一次);
2.尽量使所有的view opaque,包括Cell自身;
3.尽量少用或不用透明图层;
4.如果Cell内现实的内容来自web,使用异步加载,缓存请求结果;
5.减少subviews的数量
6.在heightForRowAtIndexPath:中尽量不使用cellForRowAtIndexPath:,如果你需要用到它,只用一次然后缓存结果
7.尽量少用addView给Cell动态添加View,可以初始化时就添加,然后通过hide来控制是否显示

  1. 提前计算并缓存cell高度(缓存到内存 数据模型中),避免重复计算;(ps:heightForRowAtIndexPath 是调用最频繁的代理方法,有多少cell就会被调用多少次,不像cellForRowAtIndexPath只会加载屏幕可见cell的个数)
  2. 滑动停止后加载图片
    方案一:利用NSRunLoop在滑动(UITrackingRunLoopMode)和停止(NSDefaultRunLoopMode)的时候Mode不同来实现:
[imageView performSelector:@selector(setImage:) withObject:nil afterDelay:0 inModes:@[NSDefaultRunLoopMode]];

方案二:利用UIScrollView的代理方法中的scrollViewDidEndDecelerating来实现:

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
    // 加载图片
}
  1. 异步绘制,遇到复杂界面,遇到性能瓶颈时,可能就是突破口;
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容