【发布时间】:2017-05-25 11:36:14
【问题描述】:
我猜我们应该倾向于为 UITableView 使用的数据模型数组使用不可变数组。关于这方面的阅读在互联网上是非常不同的。我想说这可以防止在 tableview 显示数据时修改数组。例如,如果发生上述情况,numberOfRowsInSection: 方法可能会出现问题,对吧(即使我知道理论上可行,我仍然无法真正想到在现实世界中如何发生这种情况)?
现在,在commitEditingStyle:forRowAtIndexPath: 方法中,我正在这样做(messagesArray 是可变的):
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
if (editingStyle == UITableViewCellEditingStyleDelete) {
Message *message = messageArray[indexPath.row];
[messagesArray removeObject:message];
[self.messageTable deleteRowsAtIndexPaths:[NSArray arrayWithObject: indexPath] withRowAnimation:UITableViewRowAnimationFade];
}
而不是(具有messagesArray 不可变):
NSMutableArray *temp = [NSMutableArray arrayWithArray:messagesArray];
[temp removeObject:message];
messagesArray = [NSArray arrayWithArray:temp];
如果messageArray 是不可变的,我必须执行后面的代码。
现在我有两个问题...IMO(如果我错了,请纠正我),在上述方法中以两种方式从数组中删除一个对象具有相同的效果。 messagesArray 最终删除了一个元素。就是这样...但是像后一个示例中那样执行操作,可以让我拥有不可变的数据模型数组。
有人可以评论在删除单元格后更新数据模型数组的实际首选方式(或者我可以说正确的方式?)吗?
【问题讨论】:
标签: ios objective-c arrays uitableview nsmutablearray