ios - 注册单元重用调用实际上有什么作用?

标签 ios uitableview

我不完全明白为单元重用注册一个类有什么用。我了解我们如何在单元格上使用重用标识符,我只是不明白在 viewDidLoad 中调用此方法的作用。看了一堆文档。没有点击,n00b 在这里。有人可以给我一些提示吗?

TableViewController.m

- (void)viewDidLoad {
    [super viewDidLoad];

    // Register Class for Cell Reuse Identifier
    [self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:CellIdentifier];
}

最佳答案

你有一个UITableView。它有一个为其提供 UITableViewCell 的数据源。为了节省内存和处理器周期,它卸载不再出现在屏幕上的 UITableViewCell,并将它们放入重用队列中。当它加载一个新单元格时,数据源通常会向 UITableView 请求此重用队列中的一个单元格。如果队列当前为空,UITableView 将使用提供的类构造一个新的 UITableViewCellreuseIdentifier 用于区分此特定单元格类型队列与同一 UITableView 中的另一个单元格类型队列。

像这样:

UITableView:“嘿,数据源!给我这个 indexPath 的单元格。”

数据源:“好吧。那是一种‘foo’类型的单元格。有没有你没有使用的那些正在运行的单元格?”

没有注册类(class);重用之前从数据源返回的单元格

UITableView:“是的,我知道。给你。”

没有注册类(class);没有可用的单元格

UITableView:“没有。嘿,我没有为那种单元格注册类。嗯。这里是 nil。”

类已注册;重用之前从数据源返回的单元格

UITableView:“是的,我知道。给你。”

类已注册;没有可用的单元格

UITableView:“没有。但是我已经为该标识符注册了一个类。这是一个新实例。”

关于ios - 注册单元重用调用实际上有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28440046/

相关文章:

ios - Swift 协议(protocol)扩展

ios - 基于标题文本高度的 UITableView 部分的页眉/页脚高度

ios - 在同一个 UIView 子类上用一根手指滑动和两根手指滑动

ios - 事件指示器未出现

ios - NSTimer 内存泄漏?

ios - UIPanGestureRecognizer 在触摸时立即做一些事情

swift - 滚动时或直到按下搜索栏时导航栏下方的白线

ios - 如何让容器 View 受到 UINavigationBar 的影响

ios - UITableViewCell 中的图像未按顺序显示

ios - 如何知道是否在 iOS 6 UITableViewCell 上点击了删除按钮