你真的了解UITableViewCell重用吗?
一:首先查看一下关于UITableViewCell 重用的定义 - (nullable __kindof UITableViewCell *)dequeueReusableCellWithIdentifier:(NSString *)identifier; - (__kindof UITableViewCell *)dequeueReusableCellWithIdentifier:(NSString *)identifier forIndexPath:(NSIndexPath *)indexPath NS_AVAILABLE_IOS(6_0); 在tableview 新建的时候, 会新建一个复用池(reuse pool). 这个复用池可能是一个队列, 或者是一个链表, 保存着当前的Cell.pool 中的对象的复用标识符就是reuseIdentifier, 标识着不同的种类的cell. 所以调用dequeueReusableCellWithIdentifier: 方法获取cell. 从pool 中取出来的cell 都是tableview 展示的原型. 无论之前有什么状态, 全部都要设置一遍. 在 UITableView创建同时 ,会创建一个空的复用池 .之后 UITableView在内部维护这个复用池 .一般情况下 ,有两种用法 ,一种是在取出一个空的 cell的时候再新建一个