多线程更新UITableView时容易导致的问题
2016-05-05 14:58
561 查看
我请求同一个接口两次, 第一次是那缓存, 第二次是那网络数据
在请求成功回调的主线程异步的, 先赋值数据源, 然后调用uitableview reloaddata的方法, 这时候问题来了
reloaddata的时候会先调用numberOfRowsInSection
然后再cellForRowAtIndexPath
这时候就扑街了, 更新ui是主线程异步, 在tableview调用numberOfRowsInSection 的时候拿到的数据条数是2
但是在调用cellForRowAtIndexPath数据源已经在第二此请求的回调中被改成1条, 接下来就奔溃了
请求回调
![](https://images2015.cnblogs.com/blog/504329/201605/504329-20160505145645669-547131581.jpg)
在请求成功回调的主线程异步的, 先赋值数据源, 然后调用uitableview reloaddata的方法, 这时候问题来了
reloaddata的时候会先调用numberOfRowsInSection
然后再cellForRowAtIndexPath
这时候就扑街了, 更新ui是主线程异步, 在tableview调用numberOfRowsInSection 的时候拿到的数据条数是2
但是在调用cellForRowAtIndexPath数据源已经在第二此请求的回调中被改成1条, 接下来就奔溃了
请求回调
![](https://images2015.cnblogs.com/blog/504329/201605/504329-20160505145645669-547131581.jpg)
![](https://images2015.cnblogs.com/blog/504329/201605/504329-20160505145633919-545268831.jpg)
相关文章推荐
- LiquiBase预判断
- LiquiBase预判断
- LiquiBase注释
- FZU 2037 Maximum Value Problem (打表预处理/找规律)
- UIAlertController 基本用法一
- android--UI相关常用类简介
- Liquibase简介(1)
- 图片下载工具类,可更新UI
- 树链剖分 spoj 375 Query on a tree(剖分入门)
- UINavigationController先pop再push
- iOS UIButton 自定义图片和文字位置详解
- UIProgressView/UISlider / UISwitch 简单使用
- [leetcode] 187. Repeated DNA Sequences 解题报告
- android rawquery和query的比较
- UItextfield详解 for ios
- 去除UITableView底部多余行及分割线
- 133 - The Dole Queue
- 如何修改Bluetooth link supervision timeout (基于CSR BC4/5)
- UI设计风格的变化
- GradleUserGuide中文版 21)Java插件 22)War插件