ios - 使用 NSObject 的 hash 属性来识别可重用单元是否正确?

标签 ios objective-c uitableview

我有一个自定义对象的 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/

相关文章:

ios - 如何在 Mapview 中使用动画自定义 Pin(gif 图像)?

IOS - Swift - UINavigationController.hidesBarsOnSwipe 错误

ios - 即使在重新加载数据后,UITableViewCell 如何保持突出显示?

objective-c - 动画 CAShapeLayer 大小变化

iphone - MKMapview 显示当前位置错误

ios - 从 TableView 打开 ViewController 时延迟几秒钟

iphone - 如何获取 UITableView 滚动位置以便保存?

iphone - 将图像保存到默认相机文件夹 - IOS

ios - 从 Swift 调用时,AWS Cognito 不会创建 Twitter/数字登录

.net - iOS中如何实现用户注册和认证?