iOS学习开发iOS

单元格重用的理解

2016-08-12  本文已影响95人  iOS_Alex

对于单元格重用的理解

当屏幕上滑出屏幕时,系统会把这个单元格添加到重用队列中,等待被重用,当有新单元从屏幕外滑入屏幕内时,从重用队列中找看有没有可以重用的单元格,若有,就直接用,没有就重新创建一个。

解决cell重用的问题

UITableView通过重用单元格来达到节省内存的目的,通过为每个单元格指定一个重用标示(reuseidentifier),即指定了单元格的种类,以及当单元格滚出屏幕时,允许恢复单元格以便复用。对于不同种类的单元格使用不同的ID,对于简单的表格,一个标示符就够了。

如一个TableView中有10个单元格,但屏幕最多显示4个,实际上iPhone只为其分配4个单元格的内存,没有分配10个,当滚动单元格时,屏幕内显示的单元格重复使用这4个内存。实际上分配的cell的个数为屏幕最大显示数,当有新的cell进入屏幕时,会随机调用已经滚出屏幕的Cell所占的内存,这就是Cell的重用。

对于多变的自定义Cell,这种重用机制会导致内容出错,为解决这种出错的方法,把原来的

UITableViewCell*cell = [tableview dequeueReusableCellWithIdentifier:defineString]修改为:UITableViewCell*cell = [tableview cellForRowAtIndexPath:indexPath];

这样就解决掉cell重用机制导致的问题

上一篇 下一篇

猜你喜欢

热点阅读