我最近在UITableViewController
's遇到了崩溃tableView:cellForRowAtIndexPath
:
-[__NSArrayM objectAtIndex:]: index 10 beyond bounds for empty array
对于代码:
Message* res = [messages objectAtIndex:indexPath.row]
消息是一个NSMutableArray
.
发生崩溃是因为在该tableView:cellForRowAtIndexPath:
方法中我尝试从消息数组中获取消息,但该数组可能已被其他线程更改。我的消息数组的刷新是在另一个线程上完成的,这就是我认为发生这种情况的原因。
考虑到我需要继续使用多个线程,处理这种情况的最佳方法是什么?有没有办法取消单元格的绘制并强制重绘整个消息列表?我试图做一个简单的 if 检查:
if([messages size] < indexPath.row) {
return nil;
}
这会导致该方法引发断言异常并使应用程序崩溃。
目标是在发生这种情况时优雅地重新加载整个视图。