0

看起来是一项微不足道的任务,但是我找不到我做错了什么。我有一个带有部分的表格视图,我可以删除 1 个项目,但是当我尝试删除多个项目时,所有项目都会从表格中消失。

重要的是要在这里提到,如果我只删除 1 行,该场景效果很好。删除一行不会影响 UITableView 的项目。

当我单击编辑按钮时,每一行都是删除的候选者。代码是

[self.tableView setEditing:YES animated:YES];

当我删除一行时,代码调用:

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{

    NSMutableArray *itemsOfGroup = [[table1 getItems] retain];
    int section = indexPath.section;
    section = section - 1;


    MyItem *deleteItem = (MyItem*)[[[sections objectAtIndex:section] objectForKey:@"SectionEntries"] objectAtIndex:indexPath.row];
    [itemsOfGroup removeObject:deleteItem];

    [table1 setItems:[itemsOfGroup autorelease]];
    [[[sections objectAtIndex:section] objectForKey:@"SectionEntries"] removeObjectAtIndex:indexPath.row];

    [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject: indexPath] withRowAnimation:UITableViewRowAnimationRight];  
    [self createSections];
    [self.tableView reloadData];
}

我的记忆可能有问题吗?(我认为一旦出现消息“发送到已释放实例的消息”出现在一个NSArray类中)

值得一提的是,我的项目实际上并未从数据源中删除。它们只会从表格视图中消失。

4

1 回答 1

0

当您刚刚将表 1 中的 Items 设置为它时,为什么要自动释放 itemsOfGroup?应该是设置后的释放调用,或者更好地使用带有属性的 self... 机制。在此处检查您的内存分配/删除。您是否正在丢弃所有内容?另外,删除后,您的 numberOfRowsInSection: 和 numberOfSections: 返回是多少?检查那些。

于 2012-12-10T18:22:53.287 回答