可重用标识符单元格与返回单元格子类?
Reusable identifier cells versus returning a cell subclass?
我在 xib 文件中创建我的 table 视图单元格,然后使用 tableView.dequeueReusableCell
方法在 cellForRowAt
中注册我的 table 视图和 return .在极少数情况下,我通过对它们进行子类化并手动编程接口来创建单元格,我通常只是初始化它们并从 cellForRowAt
.
中 return 它们
我最近发现您可以使用 tableView.register(cellClass: AnyClass?, forCellReuseIdentifier: String)
注册子类。我应该注册我的子类并通过 dequeueReusableCell
对它们进行 return 处理吗?使用它而不是 return 初始化子类有什么好处?
是的,您应该利用小区重用系统。重用系统允许系统非常快速地响应您 table 上的滚动操作。系统不必从头开始实例化一个全新的单元格,只需获取它已有的单元格并更新它们的内容即可。
通过每次创建一个全新的单元格来绕过该系统并不是资源的理想使用,并且使用更复杂的单元格会导致您的 table 视图明显滞后。
您必须始终注册单元格(通过代码或在故事板中)。可重用性原则在 iOS Table 和 Collection 视图中最为重要。
这意味着 table 视图仅在内存中绘制和存储当前可见的几个单元格 + 几个在最近的将来可见的单元格。如果你不使用可重用性,你将遇到大量单元格的大性能问题。
另外不要忘记在单元格子类的 prepareForReuse 方法中清理单元格ui
我在 xib 文件中创建我的 table 视图单元格,然后使用 tableView.dequeueReusableCell
方法在 cellForRowAt
中注册我的 table 视图和 return .在极少数情况下,我通过对它们进行子类化并手动编程接口来创建单元格,我通常只是初始化它们并从 cellForRowAt
.
我最近发现您可以使用 tableView.register(cellClass: AnyClass?, forCellReuseIdentifier: String)
注册子类。我应该注册我的子类并通过 dequeueReusableCell
对它们进行 return 处理吗?使用它而不是 return 初始化子类有什么好处?
是的,您应该利用小区重用系统。重用系统允许系统非常快速地响应您 table 上的滚动操作。系统不必从头开始实例化一个全新的单元格,只需获取它已有的单元格并更新它们的内容即可。
通过每次创建一个全新的单元格来绕过该系统并不是资源的理想使用,并且使用更复杂的单元格会导致您的 table 视图明显滞后。
您必须始终注册单元格(通过代码或在故事板中)。可重用性原则在 iOS Table 和 Collection 视图中最为重要。 这意味着 table 视图仅在内存中绘制和存储当前可见的几个单元格 + 几个在最近的将来可见的单元格。如果你不使用可重用性,你将遇到大量单元格的大性能问题。
另外不要忘记在单元格子类的 prepareForReuse 方法中清理单元格ui