首先看一下崩潰堆棧信息
由于tableview 調(diào)用layoutsubViews 執(zhí)行到代理方法
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
由于是崩潰在系統(tǒng)方法里面的,我們無(wú)法直接看到是因?yàn)檎{(diào)用哪個(gè)方法導(dǎo)致的崩潰
后來(lái)經(jīng)過(guò)多次調(diào)試,發(fā)現(xiàn)是因?yàn)檎{(diào)用了reloadData
出發(fā)了tableView的layoutsubviews,然后執(zhí)行到代理方法
這時(shí)候又有疑問(wèn)了,因?yàn)槲疫@里的崩潰是重新請(qǐng)求之后
這是請(qǐng)求成功之后的調(diào)用,清除了數(shù)據(jù)源(重新請(qǐng)求到的數(shù)據(jù)為空)
這里是重新請(qǐng)求的方法
從上圖可以看出,我執(zhí)行重新請(qǐng)求之前,刷新了tableView
這時(shí)候有一個(gè)推測(cè),就是我們執(zhí)行了刷新,這時(shí)候刷新還是使用的老數(shù)據(jù),但是刷新是一個(gè)異步過(guò)程,這時(shí)候,如果請(qǐng)求結(jié)果返回很快,我們執(zhí)行了清除數(shù)據(jù)源,但是刷新還沒(méi)有完成,正在進(jìn)行的刷新就無(wú)法獲取到數(shù)據(jù),導(dǎo)致崩潰文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-795709.html
解決方法,我們修改數(shù)據(jù)源,要等到刷新完成之后,
所以,添加了一個(gè)延遲文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-795709.html
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[self.dataList removeAllObjects];
[self.heightList removeAllObjects];
NSLog(@"哈哈哈嘻乖數(shù)據(jù)修改數(shù)據(jù)");
[self.dataList addObjectsFromArray:refreshDataList];
[self.heightList addObjectsFromArray:heihgtList];
[self.tableView reloadData];
});
到了這里,關(guān)于記錄一個(gè)iOS UITableView 正在刷新的時(shí)候修改數(shù)據(jù)源導(dǎo)致的崩潰的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!