Ios 使用NSObject'识别可重用单元是否正确;什么是散列属性?

Ios 使用NSObject'识别可重用单元是否正确;什么是散列属性?,ios,objective-c,uitableview,Ios,Objective C,Uitableview,我有一个自定义对象的NSMutableArray,对于每个自定义对象,我都希望在UITableView中显示相应的行。阵列将不断变化,显然,TableView也是如此。我的对象没有维护任何唯一标识符,因此我想知道如何在tableView:cellforrowatinexpath:方法中识别它们,以便进一步重用 使用对象的hash属性是否是一种好方法,如下所示 MyGroup *group = groups[indexPath.row]; NSString *reuseId = [NSString

我有一个自定义对象的NSMutableArray,对于每个自定义对象,我都希望在UITableView中显示相应的行。阵列将不断变化,显然,TableView也是如此。我的对象没有维护任何唯一标识符,因此我想知道如何在
tableView:cellforrowatinexpath:
方法中识别它们,以便进一步重用

使用对象的
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 ...
}
我认为当我从
数组中删除一些对象,然后添加一个与删除的对象具有相同哈希的不同对象时,可能会出现一种特殊情况。这将打乱渲染,因为UITableView将重用为不再存在的对象创建的旧单元


这种担心合法吗?是否有任何其他(可靠的)方法可以使用字符串值来标识对象实例,该字符串值在应用程序生命周期内保持唯一性?

答案:我误解了可重用单元标识符的概念。每个单元格不需要有唯一的重用标识符,事实上这样做是错误的,因为它会阻止UITableView重用单元格。

您使用了很多非常主观的术语,如“适当”、“良好”、“合法”和“可靠”。具体而客观地说,您想要什么?我想给每个单元格一个唯一的字符串ID,用于标识NSMutableArray中的链接对象。我曾考虑过使用对象的哈希,但我不确定在应用程序生命周期中该哈希是否足够唯一,也不可能导致冲突。您建议使用单元格标识符是完全不合适的。这根本不是它的用途。你应该试着解释你想要什么结果。您似乎不清楚单元重用id的用途。通常,它用于获取UITableViewCell的不同子类,以显示不同的数据类型。例如,我可能有一个包含树单元格和bug单元格的表。然后我会有2个重用ID,一个用于树单元,一个用于bug单元。在您的情况下,情况似乎并非如此,但我不能完全确定您的目标。您是否有一个完全唯一的对象数组,并希望将不同的对象链接到唯一的自定义行?或者您正在尝试创建一种从单元访问模型对象的方法?