我注意到,在使用UITableViewDiffableDataSource
/时UICollectionViewDiffableDataSource
,ItemIdentifierType
使用时
var managedDataSource: UITableViewDiffableDataSource<String, StringCellObject>!
class StringCellObject: Hashable {
let value: String
func hash(into hasher: inout Hasher) {
hasher.combine(value)
}
static func == (lhs: StringCellObject, rhs: StringCellObject) -> Bool {
return lhs.value == rhs.value
}
init(value: String) {
self.value = value
}
}
whenStringCellObject
是一个类,甚至不调用 Hashable 函数,并且对象始终被视为已更改(即使值相同)
当我将类更改为结构时
struct StringCellObject: Hashable {
我得到了正确的行为
为什么在使用类时行为会发生变化以及如何获得预期的行为?