[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/