我有一个自定义对象的 NSMutableArray,我想为每个对象在 UITableView 中显示适当的行。数组将不断变化,显然 TableView 也是如此。我的对象不维护任何唯一标识符,所以我想知道如何在 tableView:cellForRowAtIndexPath:
方法中识别它们以便进一步重用。
使用对象的 hash
属性是否是一个好方法,如下所示?
MyGroup *group = groups[indexPath.row];
NSString *reuseId = [NSString stringWithFormat:@"group_id_%d", group.hash];
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:reuseId];
if (cell == nil) {
// ... init cell ...
}
我认为当我从 groups
数组中删除一些对象然后添加一个不同的对象时会发生特殊情况,该对象恰好与删除的对象之一具有相同的哈希值。这会搞乱渲染,因为 UITableView 会重用为不再存在的对象创建的旧单元格。
这种担忧是否合理?是否有任何其他(可靠的)方法可以使用在应用程序生命周期内保持唯一的字符串值来识别对象实例?
最佳答案
回答:我误解了可重用单元标识符的概念。每个单元格不需要有唯一的重用标识符,事实上这样做是错误的,因为它会阻止 UITableView 重用单元格。
关于ios - 使用 NSObject 的 hash 属性来识别可重用单元是否正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24195757/