- (void)registerCellCallBack:(id<CellCallBack>)callBack {
int i = 0;
for(; i < _dataSource.count; ++i) {
id<CellCallBack> oldCallBack = _dataSource[i];
if([callBack key] <= [oldCallBack key]) {
break;
}
}
if(i < _dataSource.count) {
[_dataSource insertObject:callBack atIndex:i];
} else {
[_dataSource addObject:callBack];
}
[self.table beginUpdates];
[self.table insertRowsAtIndexPaths:@[[NSIndexPath indexPathForRow:i inSection:0]] withRowAnimation:UITableViewRowAnimationNone];
[self.table endUpdates]; //--crashed here called "NSInternalInconsistencyException(SIGABRT)"
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return _dataSource.count;
}
iOS9中的代码很好,在iOS10中崩溃,但在我调试代码时没有出现。
崩溃信息
无效更新:第0部分中的行数无效 更新后现有部分中包含的行数(7) 必须等于之前该部分中包含的行数 更新(0),加上或减去插入或删除的行数 从该部分(插入1,删除0)和加号或减号 移入或移出该部分的行(0移入,0移出)。
答案 0 :(得分:0)
您需要按以下方式进行更改:
到
[self.table reloadData];
这
[self.table beginUpdates];
[self.table insertRowsAtIndexPaths:@[[NSIndexPath indexPathForRow:i inSection:0]] withRowAnimation:UITableViewRowAnimationNone];
[self.table endUpdates]; //--crashed here called "NSInternalInconsistencyException(SIGABRT)"