我在xib文件中创建表格视图单元格,然后向表格视图注册,并使用cellForRowAt
方法返回tableView.dequeueReusableCell
。在极少数情况下,我通过对单元格进行子类化并手动编程接口来创建单元格,通常只初始化它们并从cellForRowAt
内部返回它们。
我最近发现您可以使用tableView.register(cellClass: AnyClass?, forCellReuseIdentifier: String)
注册子类。我应该注册我的子类并通过dequeueReusableCell
返回它们吗?使用它而不是返回初始化的子类有什么好处?
答案 0 :(得分:1)
是的,您应该利用单元复用系统。重用系统允许系统非常快速地响应表上的滚动操作。无需从头实例化一个全新的单元格,系统只需获取已有的单元格并更新其内容即可。
通过每次使用一个新的单元格来绕过该系统并不是理想的资源使用方式,而如果单元格更加复杂,则可能导致表格视图明显滞后。
答案 1 :(得分:1)
您必须始终注册单元格(通过代码或在情节提要中)。在iOS表和集合视图中,可重用性原则是最重要的。 这意味着表视图仅将当前可见的几个单元格+在不久的将来可见的几个单元格绘制并存储在内存中。如果您不使用可重用性,那么大量的单元将带来很大的性能问题。
也不要忘记在单元格子类的prepareForReuse方法中清理单元格ui