可能最重要的原因是:你先清空了列表数据,然后再请求网络数据赋值。。
正常的应该是这样的步骤。。
1. 下拉
2. 达到下拉临界值以后再请求网络数据
3. 待数据加载到本地以后才更新 data source
4. reload tableview
如果先清空再下拉,后果就是往下拉的距离超过一个 cell 的高度时,table view 的几个委托方法就会被调用,由于 data source 已经被清空,造成错误的内存访问(包括数组越界,访问已销毁的对象)导致 crash
解决方法:
-(void)headerRefresh
{
nowPage =1;
isNeedIndicator=YES;
//[self.data removeAllObjects];
[self loadData];//添加该句
}