TableView的常见优化

在iOS应中,UITableView应该是使率最高的视图之一  。iPod、时钟、日历、备忘录、Mail、天气、照片 、电话、短信、Safari、App Store、iTunes、Game Center...乎所有带的应用中都能看到它的身影,可见它的重要性。下面列举了一些优化性能瓶颈的思路。

1、最常见的就是cell的重用, 注册重用标识符;如果不重cell时,每当每个cell显示到屏幕上时,就会重新创建 个新的cell,如果有很多数据的时候,就会堆积很多cell。如果重用cell,为cell创建 个ID,每当需要显示cell的时候,都会先去缓冲池中寻找可循环使用的cell,如果没有再重新创建cell。

2、cell的布局填充等操作比较耗时,最好创建时就布局好,如果可以将cell单独放到某个自定义类,重写initWithStyle方法,初始化时就布局好。

3、提前计算并缓存cell的属性及内容;当我们创建cell时,编译器并非先创建cell再定cell的高度,而是先根据内容一次确定每个cell的高度,再创建要显示的cell,滚动tableView时,先提前估算高度告诉编译 器,编译器知道高度后,紧接着就会创建cell,这时再调用高度的具体计算方法,这样可以减少去计算屏幕显示以外的cell而浪费时间。

4、减少Cell中控件的数目;尽量使cell得布局大致相同,不同样式的cell可以使用不同的重用标识符,初始化时添加控件,不适用的可以先隐藏。尽量不要动态地addSubView。

5、不要使ClearColor,无背景 ,透明度也不要设置为0。

6、使用局部刷新;如果只是刷新某个section的话,最好调用reloadSection而不是直接reloadData

7、加载网络数据,下载图片,使用异步操作,并缓存,尽量不要阻塞主线程。

8、不要实现用不到的代理方法,tableView只需遵守两个协议就能展示。

9、按需加载cell,cell滚动很快时,只加载范围内的cell

10、缓存行高;如果整个tableView只有固定行高的一种cell时,无需实现heightforRow方法,在初始化时可以直接设置tableView的rowHeight。

你可能感兴趣的:(TableView的常见优化)