美文网首页
UITableView的重用机制

UITableView的重用机制

作者: mrChan1234 | 来源:发表于2017-11-17 14:20 被阅读0次

    UITableView作为在项目中最常用控件之一,对于开发人员而言特别重要,基本上哪个App都用到了tableView,于是,理解tableView的重用机制对于iOS开发人员来说很重要,

    首先tableView为什么需要重用机制呢?我们来举个例子,假如一个tableView需要加载N行cell,那就需要创建N个cell来进行显示,可是作为用户我们只能看到手机屏幕中那仅有的几个cell,滑动的时候才能看到更多的cell,于是我们如果创建N个cell的话,就会造成内存的损失。为了优化这种内存损失,重用机制应运而生,即我们不需要创建N个cell,不要一次性加载那么多的cell,而只加载屏幕上所显示的cell,当监听到用户滑动的时候,离开屏幕的cell可以存储起来,便于下次赋值显示,而不是直接销毁再重新创建.

    重用机制实现了数据和显示的分离,并不为每个数据创建一个UITableViewCell,我们只创建屏幕可显示的最大的cell个数+1,然后去循环重复利用这些cell,既节省空间,又达到我们需要显示的效果.

    这种机制下系统默认有一个可变数组NSMutableArray*  visiableCells,用来保存当前显示的cell.一个可变字典NSMutableDictnery* reusableTableCells,用来保存可重复利用的cell.(之所以用字典是因为可重用的cell有不止一种样式,我们需要根据它的reuseIdentifier,也就是所谓的重用标示符来查找是否有可重用的该样式的cell),用以一一对应.

    如代码所示:

    重用机制

    首先,从重用队列中reusableTableCells字典中取出cell(这一步是根据reuseIdentify标识作为键去字典中取出这个类型的cell),假如没取到,说明重用字典(队列)中没有reuseIdetify这种类型的cell,那么就创建一个这种类型的cell,当监听cell在屏幕中的时候,就讲其放入visibleCells中去,当监听到cell离开屏幕的时候,就将其存入reusableTableCells中去(相当于 [reusableTableCells setValue:cell  forKey:reuesIdentifier]),这样可以达到重复创建一种类型的cell,类似于一种缓存机制。

    作者:mrChan1234

    相关文章

      网友评论

          本文标题:UITableView的重用机制

          本文链接:https://www.haomeiwen.com/subject/usnbmxtx.html