一 重用机制
1 问题
UITablevView是开发中最常用的实现滚动列表的方案之一, 列表的具体内容载体由UITablevViewCell, 负责一个列表可能有成千上万个cell,然而iOS设备的内存是有限的,无限制的创建cell将会耗尽设备内存进而导致程序crash.
苹果为了解决此问题, 设计出一种既能展示大量数据又能节省内存的机制即重用机制.
2 原理
UITableView内部维护了一个重用缓存池队列, 当屏幕上cell移动出屏幕后, 系统自动把它放入重用池中, 当dataSource下一条数据要求呈现时, 系统会去重用池中查找是否有可重用对象, 如果有则拿出复用, 没有则走创建流程. 同时, 为了避免避免列表中有多种自定义UITableViewCell, 苹果通过绑定重用标识符(identifier)来查找对应的cell类型.
在这里查看官方文档
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];
//如果重用池当中没有可重用的cell,那么创建一个cell
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier];