在UITableView中的 cellForRowAtIndexPath:方法中,会根据内容的多少来实例化单元格,有多少行内容就有多少个单元格,当内容多的时候,会消耗很多内存的,所做的优化就是,当view移动的时候,单元格移出视图,单元格将不会被销毁,而是放到了缓存池中,当需要新的单元格的时候,会首先去缓存池寻找是否有可用的,没有就再实例化一个。如:一个屏幕一次显示10行内容,一般需实例化11个单元格即可,可重复使用。
以下方法需写入cellForRowAtIndexPath:方法中:
// 0. 标示符统一,使用static的目的可以保证表格标示符永远只有一个
static NSString *cellIdentifier = @"myCell";
// 1. 首先在缓冲池中找名为"myCell"的单元格对象
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
// 2. 如果没有找到,实例化一个新的cell
if (cell == nil) {
cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
}