ios - 网络请求数据重复的可能
怪我咯
怪我咯 2017-04-18 09:53:42
[iOS讨论组]

看代码:

#viewDidLoad

    [self getActivityListFromNetwork];
    
    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(refreshActivityListFromNetwork)
                                                 name:@"backRefresh"
                                               object:nil];

#refreshActivityListFromNetwork
- (void)refreshActivityListFromNetwork{
    [self.dataArray removeAllObjects];
    [self getActivityListFromNetwork];
    [self.mainTableView headerEndRefreshing];
}                                             
                                       
                                               

问题是:如果注销后重新登录的话会有一定概率出现重复数据。
分析原因是点击登录后,页面加载执行了getActivityListFromNetwork这个方法。这时候去请求数据。在没有返回数据前执行了refreshActivityListFromNetwork又一次去请求了数据。导致两次请求获得的数据都加载出来了。。。

怪我咯
怪我咯

走同样的路,发现不同的人生

全部回复(5)
伊谢尔伦

在每次数据请求成功后执行 removeAllObjects 和 reloadData 即可,另外最好给你的网络请求方法相应的缓存机制,没有新的数据时,无需更新数据源。

天蓬老师

自问自答。。。。

巴扎黑

为什么不是网络请求回来获取到数据才执行[self.dataArray removeAllObjects];呢?

黄舟

同意楼上,数据源removeAllObjects 要放在网络请求成功里边

高洛峰

额,为什么用这么恶心的写法了,代理,block值得你拥有

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号