bugly报错:
*** -[__NSArrayM objectAtIndex:]: index 3 beyond bounds [0 .. 0]
JiafeigouIOS -[MessageNewViewController tableView:cellForRowAtIndexPath:]
执行的代码:
1. [self.dataArray removeObjectsInArray:delArray];
2. self.tbView.height = kheight - SafeAreaTopHeight - 44;
3. [self.tbView reloadData];
原因:
第二行代码是导致崩溃的原因。
当我先设置self.tbView.height的时,tableview要移动。由于要滚动,有新的行要显示到窗口,所以将首先调用
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
这个方法。在这个方法里有语句
[self.dataArray objectAtIndex:indexPath.row];
而第一行代码对数据进行了删除操作,所以可能就会出现数组越界,导致崩溃。
解决:
1. [self.dataArray removeObjectsInArray:delArray];
2. [self.tbView reloadData];
3. self.tbView.height = kheight - SafeAreaTopHeight - 44;
先执行reloadData方法,接下来会先更新数据源,也就是先执行numberOfRowsInSection这些方法。这样,tableview已经知道它要显示的行数,然后再执行cellForRow就不会出错了!