博客> 使用MJRefresh刷新有时候会导致程序崩溃,原因是数据源数组越界
使用MJRefresh刷新有时候会导致程序崩溃,原因是数据源数组越界
2018-06-23 17:56 评论:0 阅读:336 wangwei1
iOS使用MJRefresh刷新有时候会导致程序崩溃 原因是数据源数组越界
  1. 感谢 蚊香酱 这位兄弟

刚刚遇到这个问题,原因是在拖动的过程中如果数据量大,会有cell出到屏幕外面,在松手之后cellForRowAtIndexPath会被调用

我在松手的时候调用了获取数据方法,方法刚开始就清除了原来的数组,然后接口返回的数据再放入数组,但是在数据被清除之后系统恰巧调用了cellForRowAtIndexPath,所以会出现这样的问题

#pragma mark - MJRefresh

-(void)setRefresh{

__weak typeof(self) weakSelf = self;

self.tableView.mj_header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{

 _nextPageIndex = 0;

 self.dataSource = [[NSMutableArray alloc] init]; //重初始化就没事了,在cellForRowAtIndexPath 判断数据源的个数大于0 就稳健了。 

  [weakSelf loadData];

  }];

  self.tableView.mj_footer = [MJRefreshBackNormalFooter footerWithRefreshingBlock:^{

    [weakSelf loadData];

  }];

 }
收藏
0
sina weixin mail 回到顶部