Ios 可重用标识符单元格与返回单元格子类?

Ios 可重用标识符单元格与返回单元格子类?,ios,uitableview,cocoa-touch,uikit,Ios,Uitableview,Cocoa Touch,Uikit,我在xib文件中创建表视图单元格,然后使用tableView.dequeueReusableCell方法在表视图中注册并返回cellForRowAt。在极少数情况下,我通过对单元格进行子类化和手动编程来创建单元格,我通常只是初始化它们并从cellForRowAt中返回它们 我最近发现可以使用tableView.register(cellClass:AnyClass?,forCellReuseIdentifier:String)注册子类。我应该注册我的子类并通过dequeueReusableCel

我在xib文件中创建表视图单元格,然后使用
tableView.dequeueReusableCell
方法在表视图中注册并返回
cellForRowAt
。在极少数情况下,我通过对单元格进行子类化和手动编程来创建单元格,我通常只是初始化它们并从
cellForRowAt
中返回它们


我最近发现可以使用
tableView.register(cellClass:AnyClass?,forCellReuseIdentifier:String)
注册子类。我应该注册我的子类并通过
dequeueReusableCell
返回它们吗?使用它而不是返回初始化的子类有什么好处?

是的,您应该利用单元重用系统。重用系统允许系统非常快速地响应表上的滚动操作。系统不必从头开始实例化一个全新的单元,只需获取已有的单元并更新其内容即可


通过每次创建一个全新单元来绕过该系统并不是对资源的理想利用,使用更复杂的单元可能会导致表视图出现明显的延迟。

您必须始终注册单元(通过代码或在情节提要中)。可重用性原则在iOS表和集合视图中是最重要的。 这意味着表视图只在内存中绘制和存储当前可见的几个单元格+最近将来可能可见的几个单元格。如果您不使用可重用性,那么大量的单元将带来很大的性能问题


另外,不要忘了清理单元格子类中prepareForReuse方法中的单元格ui

不知道
prepareForReuse
方法,谢谢您的提醒。如果标签可以在cellFor中填充或将立即显示,您将看不到区别。但是,一旦您尝试使用异步数据(如图像加载)执行此操作,您可能会看到如何重用旧图像并在几秒钟内进行更新。我建议您尝试一下,只是为了知道它如何不起作用)