使用UITableView dequeueReusableCellWithIdentifier:
这基本上意味着您不必每次都从头开始重新创建表格单元格。如果你给一个单元格一个重用标识符,它会在内存中保留那个单元格,并在你请求一个匹配那个标识符的单元格时让你出列它。
由于每个单元格都有一个唯一的图像,因此您最好将每个单元格的唯一标识符设置为图像中的某些内容 - 也许是图像的 URL 或文件名。这将比处理和重新创建单元格消耗更多的内存,但它会减少滚动延迟,如果您的图像很小,那么内存占用量就不会那么大。
你最终可能会得到类似的东西:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *imageURL = urlOfImageForThisCell;
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:imageURL];
if(!cell)
{
cell = [self makeNewCell];
//if your reuseIdentifier is unique to each image, you only ever need to set it's image here
cell.image = imageForThisCell;
cell.reuseIdentifier = imageURL;
}
//additional cell setup here
return cell;
}
您还需要查看子类化 UITableViewCell 和覆盖 prepareForReuse。