gpt4 book ai didi

ios - dequeueReusableCell 何时会返回 nil?

转载 作者:行者123 更新时间:2023-12-05 02:08:07 26 4
gpt4 key购买 nike

我是 iOS 编程领域的新手,我最近在网上看到了一些实现的代码示例,例如:

functableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
var cell = tableView.dequeueReusableCell(withIdentifier: customCellIdentifier, for: indexPath) as? CustomCell
if (cell == nil) {
cell = CustomCell(style: UITableViewCell.CellStyle.default, reuseIdentifier: customCellIdentifier) asCustomCell
}
...
}

作者试图处理 dequeueReusableCell 返回 nil 的事件。

但根据我对 UITableView 和自定义单元格的有限个人经验,我还没有遇到 dequeueReusableCell 返回 nil 的情况。

通过研究,我发现原因可能是

"The dequeue… methods try to find a cell with the given reuse identifier that is currently offscreen. If they find one, they return that cell, otherwise they return nil."

from MrTJ's answer here

但这在我身上从未发生过一次。当我故意给它一个错误的标识符时,会发生运行时错误,但不会返回 nil 一次。我想知道什么时候会发生这种情况,是否真的有必要处理它。

最佳答案

该代码不正确。当重用池中没有可用单元时(即当 TableView 首次出现)。在这种情况下,您有责任分配一个单元格。

您的问题中显示的 dequeueResuableCell 的较新形式将始终返回一个单元格,因为它会根据需要分配一个单元格。

如果条件向下转换失败(也就是说,返回的单元格不是 CustomCell 的实例),您问题中的表达式可以返回 nil

我认为这代表某处存在严重的错误配置,应该在开发过程中发现。出于这个原因,通常使用强制向下转换;在开发过程中你遇到了崩溃,解决问题并继续前进。

let cell = tableView.dequeueReusableCell(withIdentifier: customCellIdentifier, for: indexPath) as! CustomCell

您问题中的代码是某种新旧混合的科学怪人。

关于ios - dequeueReusableCell 何时会返回 nil?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61204134/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com