Ios 在TableView/CollectionView中注销单元格以便重用有什么意义吗?

Ios 在TableView/CollectionView中注销单元格以便重用有什么意义吗?,ios,swift,uitableview,uicollectionview,Ios,Swift,Uitableview,Uicollectionview,我正在制作精简的自定义TableView和CollectionView子类,其中包含一些生活质量特性,例如自动注册单元格以供重用,因此我不必在余生中每次都编写这些代码 我在运行时生成单元标识符,并注册它们。我想“为什么不也实现自动注销”,因为一个单元格显然可能会被重新加载而永远不会返回。但我真的不知道怎么 根据有关为和注册单元格的文档,它说明如下: 如果要注销nib文件,可以为nib指定nil 从指定的重用标识符 但是,如果我(在我的子类UICollectionView中)尝试使用self.re

我正在制作精简的自定义TableView和CollectionView子类,其中包含一些生活质量特性,例如自动注册单元格以供重用,因此我不必在余生中每次都编写这些代码

我在运行时生成
单元标识符
,并注册它们。我想“为什么不也实现自动注销”,因为一个单元格显然可能会被重新加载而永远不会返回。但我真的不知道怎么

根据有关为和注册单元格的文档,它说明如下:

如果要注销nib文件,可以为nib指定nil 从指定的重用标识符

但是,如果我(在我的子类UICollectionView中)尝试使用
self.register(nil,forCellWithReuseIdentifier:identifier)
我会得到错误

Ambiguous use of 'register(_:forCellWithReuseIdentifier:)'
我不知道为什么,但我想可能是因为这两个功能:

register(_ cellClass:AnyClass?, forCellWithReuseIdentifier:String)
register(_ nib:UINib?, forCellWithReuseIdentifier:String)
当试图将
nil
作为第一个参数传递时,它们是不明确的

那么-文档实际期望我做什么?我可以把零抛给任何东西来帮助它选择其中一个吗? 还有-注销真的有必要吗?我以前从未做过,在网上也找不到太多关于它的信息。。 注册一个手机需要多少钱?我猜实际“注销”一个单元格要比只注册一个单元格花费更高,因为注销将是一项实际操作,但我可能错了


我知道我可以用相同的标识符注册不同的细胞,这实际上会注销以前的注册,但如果我100%确定我永远不会对不同的细胞使用相同的标识符,我需要注销吗?

我一生中从未注销过可重复使用的细胞,所以我不知道这是否值得,但是如果你真的想这样做,你就必须对你的代码更加具体。你是对的,因为它不能正确地解释这个方法

tableView.register(Optional<UINib>.none, forCellReuseIdentifier: "cheese")
tableView.register(可选。无,强制重用标识符:“cheese”)

将允许编译器计算出您正在使用的两种方法中的哪一种

您可以将
nil
向下转换到
UINib?
以让编译器知道您指的是哪个
寄存器

self.register(nil as UINib?, forCellWithReuseIdntifier: identifier)