每当有一个cell从屏幕消失,就将其放到缓存池中,如果有新的cell出现,就去缓存池中取,如果缓存池中没有,再创建。
1.UITableView内部定义了两种数据结构,NSMutableArray *visiableCells和NSMutableDictionary *reuseTableCells;其中visiableCells保存屏幕上可见的cell,而reuseTableCells保存可重用的cells. 2.在tableView显示之初,reuseTableCells为空。那么tableView dequeueReusableCellWithIdentifier:CellIdentifier返回nil。开始的cell都是通过[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]来创建,而且cellForRowAtIndexPath只是调用最大显示cell数的次数。
但是查看UITableView.h,只找到了visibleCells,没有找到reuseTableCells。 而且visibleCells也不是NSMutableArray 类型。
@property (nonatomic, readonly) NSArray<__kindof UITableViewCell *> *visibleCells;
这有一个疑问,当我们滑动屏幕时,屏幕上可见的Cell是变化的。那为什么要申明一个NSArray而不申明NSMutableArray?