ios - UITableView reloadData 和@catch block

标签 ios uitableview try-catch

[UITableView reloadData] 未在@catch block 中调用

这是我的代码:

@try {
    [self.tableView insertRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationAutomatic];
}
@catch (NSException *exeption) {
    [self.tableView reloadData];
}

有时在 tableview 中插入新行时会出现问题(具体是哪个并不重要),我想处理它。当我测试异常时引发 @catch block 处理它并且不会发生崩溃,但 reloadData 也不会调用。我还尝试使用 perfomSelectorOnMainThread: 和 GCD 在主线程上手动调用 reloadData:

@catch (NSException *exeption) {
    dispatch_async(dispatch_get_main_queue(), ^{
        [self.tableView reloadData];
    });
}

但它也没有产生任何效果。有人可以提出建议吗?谢谢!

最佳答案

在 Objective-C 中,捕获异常并继续运行并不是一个好主意。最好找出问题所在并防止异常发生。

但无论出于何种原因,您都可以尝试 -performSelector:withObject:afterDelay:

[self.tableView performSelector:@selector(reloadData) withObject:nil afterDelay:0.0];

更新

-performSelector:withObject:afterDelay: 总是在以后运行 run loop即使延迟为 0。

[self.tableView performSelector:@selector(reloadData) withObject:nil afterDelay:0.0];

作用是在下一个run loop中调用-reloadData方法。当当前运行循环中有待处理的 UI 更改时,这很有用。

关于ios - UITableView reloadData 和@catch block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13420826/

相关文章:

ios - 如何在代码中选择Column系列Bar

ios - 设备旋转时 UITableViewHeader 不保持位置

python - “finally”有多深?

c# - 陷入无限循环

javascript - node.js ParseError - 哪个文件抛出错误?

ios - "Unrecognized selector sent to instance"使用自定义表格单元格时

iPhone iOS NSMutableAttributedString 编辑器示例

ios - 将数据从 Collection View 单元格内的 TableView 单元格传输到另一个 Collection View 单元格[带图片!]

iphone - 仅在某些 UITableViewCells 上删除显示

ios - 什么用作 TableView subview 的委托(delegate)和数据源?