用MJRefresh进行下拉刷新时,会发生意想不到的崩溃问题
问题主要是分析数组越界的两个问题
数组越界 'index 0 beyond bounds for empty array'看字面意思就知道了.
问题1 先清空了数据,再刷新的问题
如果先清空再下拉,后果就是往下拉的距离超过一个 cell 的高度时,table view的几个委托方法就会被调用,由于 data source已经被清空,造成错误的内存访问(包括数组越界,访问已销毁的对象)导致 crash.看堆栈信息会发现,mj的self.contentInset = inset;
问题2 在处理数据上面的问题
当你处理的数据是在网络数据成功的回调里面时, 也发生了崩溃怎么办?原因很简单,就是分为这3个步骤:
1.dataArray.removeallobjects
2.判断mj.header和mj_footer 是否isRefreshing,->返回一个bool值,然后如果if(isRefreshing) endRefresing即可.根据需要resetNoMoreData还是endRefreshingWithNoMoreData.
3.dataArray.addobjecs->reload即可.
备注:千万不要reset之后再执行endRefresing..