gpt4 book ai didi

ios - TableView : How to proceed after catching 'NSInternalInconsistencyException' ?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:06:18 27 4
gpt4 key购买 nike

我有一个带有 UITableView 的应用程序。应用程序与服务器通信。

问题如下:

客户端 1 删除了 TableView 的一个单元格。数据更新被传输到服务器,服务器将数据更新发送到客户端 2。同时,客户端 2 从 TableView 中删除一个单元格。由于接收更新,抛出 NSInternalInconsistencyException,因为之前和之后的单元格数量不符合预期(差异是 2 而不是 1)。

应用程序崩溃

[tableView endUpdates];

当然我可以捕获异常

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

if (editingStyle == UITableViewCellEditingStyleDelete) {

@try{
// Send data update to the server
[sender sendDataToServer:data];

// Update tableview
[tableView beginUpdates];
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObjects:indexPath, nil] withRowAnimation:UITableViewRowAnimationFade];
[tableView endUpdates];
}
@catch (NSException * e) {
// Hide red delete-cell-button
tableView.editing = NO;
// Jump to previous ViewController
[self.navigationController popViewControllerAnimated:YES];
}
}
}

但是在成功捕获之后我得到了一个

EXC_BAD_ACCESS exception in [_UITableViewUpdateSupport dealloc].

如何防止应用程序崩溃?我必须在 catch-block 中做什么才能“清理”这种情况?重新加载 tableview 没有任何效果。

编辑:numberOfRows 方法如下所示:

- (NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {

return [dataSourceArray count];
}

最佳答案

@synchronized(lock) 解决了我的问题。

我只需要确保只有一个线程能够同时操作数据源数组。现在一切正常,不再有“NSInternalInconsistencyException”。

感谢 trojanfoe 和 luk2302。

关于ios - TableView : How to proceed after catching 'NSInternalInconsistencyException' ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37186240/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com