TableViewcell 复用机制的采用和舍弃

本次就针对不同方式的创建tableview而使用复用和取消复用做详细的讲解。

代码形式创建tableview

代码创建tableview且舍弃cell复用机制

自定义view

5777390-cff6a94edc47294f.png
5777390-c818b1ed577ef339.png

自定义tableviewcell

5777390-f6ee7afaf71ad297.png
5777390-667226563efcf268.png

viewcontroller

5777390-4a6ad4d4acc62a2a.png
5777390-e85465d18edca9ec.png
5777390-48abcd775366b9e2.png

思路解析:纯代码定义view, tableviewcell和viewcontroller。上面的实现舍弃了tableview的复用机制,cellForRowAtIndexPath:indexPath 保证了每次会根据indexpath来获取不同的cell。通过打印cell信息可以看到即便屏幕出现滚动,每次都依然会创建新的不同的cell,滚出屏幕的cell所占用的内存会被释放掉,这样的问题尤其在大数据的展示上会相对内存吃紧,不是很采纳。

视频地址

代码创建tableview且使用复用机制

5777390-bdbe4c62f03438ef.png
5777390-2af7b2b8179b8139.png
5777390-e2ab73ba7b96d6b5.png
5777390-7bd87d3f9e038908.png
5777390-9a514e6da8551548.png
5777390-e8f65e7e7352e65d.png
5777390-8d78ac87ac8e4243.png

思路解析:纯代码定义view, tableviewcell和viewcontroller。 CodeReuseTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:reuseIdentifier]; 使用了tableviewcell的复用机制,通过打印cell信息可以看到即便屏幕出现滚动,每次新出现的cell都会使用移出屏幕的cell的地址。

视频地址

Xib形式创建tableview

registerxib并采用复用机制

5777390-0c6e8fd9eec3829c.png
5777390-62cdb7e1624f8c51.png
5777390-b1abc5adbf75ee51.png
5777390-52efe5031b4cc616.png
5777390-6a2b70d9bdf95078.png
5777390-6974bcf411d36ffa.png
5777390-d26552fd570aa599.png
5777390-21cb87776d6e2fbb.png
5777390-fc522bcb77186f7d.png

思路解析:这里使用了新的复用机制写法,dequeueReusableCellWithIdentifier:forIndexPath 和 dequeueReusableCellWithIdentifier的主要区别在于系统会自动创建好cell如果取出来为空的话,不需要再自己做空cell的判断。但是使用这种新的方式前必须首先注册tableview对应的nib或者class形式的cell。现象和复用机制一样。通过打印cell信息可以看到即便屏幕出现滚动,每次新出现的cell都会使用移出屏幕的cell的地址。

registerclass并采用复用机制

5777390-8b0cde713c611981.png
5777390-c3ba5d855b243d2e.png
5777390-3ebbd92cc5af158d.png
5777390-b72fc8b7325466b5.png
5777390-d2082c1c40154da0.png
5777390-422ed9c01ecd61c6.png
5777390-f09c559635563dff.png
5777390-15f6ca6c2306198d.png

思路解析:和上面的xib的注册方式很相似,唯一需要注意的地方是registerclass后,如果是纯代码写的cell,需要在cell文件中复写- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString*)reuseIdentifier

文章结尾附上github代码地址

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值