iOS问题积累- 解决列表数据重复问题

三个列表,因为我使用了一个数据源,在弱网的情况下,随便点击刷新,就会出现数据错乱。

数据错误.png

没加锁之前的写法,虽然我在每次刷新之前都清空了数据源,但是还是出现了数据错误的情况,是因为在快速下啦加载和上啦刷新的同时,2个线程同时对数据源操作,如果在2个线程都判断infomations为空时,都添加数据,此时就会出错。

[NetWorkClient getMessageList:noticeType page:page success:^(id response) {
        if ([response[@"code"] integerValue] == 100) {
            NSArray *arr=response[@"data"][@"messageList"];
            if (arr.count<=0) {
                [self.mainTableView.mj_footer endRefreshingWithNoMoreData];
            }else{
                    if (_currentPage == 1) {
                        [_infomations removeAllObjects];
                        [self.infomations addObjectsFromArray:arr];
                    }else{
                        [self.infomations addObjectsFromArray:arr];
                    }
                    [self.mainTableView reloadData];
            }
        }
    } failure:^(NSError *err) {
    }];

解决办法,就需要对这个方法进行加锁。

        [_mutexLock lock];
        if ([response[@"code"] integerValue] == 100) {
 
            NSArray *arr=response[@"data"][@"messageList"];
            if (arr.count<=0) {
                [self.mainTableView.mj_footer endRefreshingWithNoMoreData];
            }else{
                    if (_currentPage == 1) {
                        [_infomations removeAllObjects];
                        [self.infomations addObjectsFromArray:arr];

                    }else{
                        [self.infomations addObjectsFromArray:arr];
                    }
                    [self.mainTableView reloadData];
            }
        }
          [_mutexLock unlock];

参考:
http://www.cocoachina.com/ios/20161105/17967.html
https://segmentfault.com/q/1010000006002907

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 昨日,终于寻找到了心仪的,日本 伊贺烧。走在店外就被里面的朴实布置所吸引。店里的老板娘给我一种安静、闲适...
    王波_阅读 2,669评论 2 1
  • 定了目标西北菜,我们开始在大众点评网上搜寻评价最好的西北菜餐馆,几经筛选,我们确定了一家处于盐市口附近的人气火爆的...
    木可人儿阅读 277评论 2 0
  • 每一天,我都要朝着你离去的方向走 每一天,我都感觉我们能够邂逅 每一天,我都感觉你就在不远处等我 每一天,我都好象...
    泰安左眼皮跳跳阅读 212评论 1 6
  • 一晃辞职在家30天了,不断的在看书学习,日子过得不快不慢,但是回过来一想,这一个月的所谓静修学习,却让我不断...
    杰米扬大叔阅读 381评论 0 0