Ziank的技术博客

UITABLEVIEW的性能提升

所谓UITableView的性能,主要指的就是在滑动列表时的流畅度,这个主要是由cell得加载性能决定最终UITableView的滑动效果是否流畅。本文主要介绍两种简单地提升性能的方法:

  • UITableViewCell的重用机制;
  • 修改滑动过程中的加载机制。

###UITableViewCell的重用机制

使用cell的重用机制,需要在申请cell时进行指定,就是说需要使用 initWithStyle:reuseIdentifier:来替代init函数,否则就无法重用申请到的cell内存。

1
UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"test”];

这样就申请到了一个可重用的cell,重用标记为test,之所以有一个重用标记是为了能够将类似的cell进行重用,这样很多view都不需要重新绘制,才能够真正的提高性能。

申请到了cell以后,记得在cell的子类中实现方法prepareForReuse,这个方法会在cell滚出屏幕的时候调用,一定要注意该方法必须调用 super的prepareForReuse。

1
2
3
4
- (void)prepareForReuse
{
[super prepareForReuse];
}

实现了init和perpareForReuse之后,就可以在 UITableViewDataSource的方法 tableView:cellForRowAtIndexPath: 中实现重用cell了。

1
GroupMessageCell *cell = [tableView dequeueReusableCellWithIdentifier:@"test”];

使用这个方法可以获取到能够重用的cell,如果没有能够重用的cell,则返回值为nil,这时可以再去进行Cell的内存申请。

###修改滑动过程中的加载机制

关于这块,我也没有过多可以详细叙述的,建议大家好好阅读一下Allen的《UIScrollView实践经验》这篇博客,里面详细描述了具体应该怎么利用scrollView的decelerate这个属性来进行性能的提升。