聊天列表在reloadData时无法成功加载数据

在项目开发的过程中遇到这样一个问题,iPhone6上聊天列表在reloadData时无法成功加载数据,但是只要手指滑动UITableView即可成功加载。

期初被该问题给困惑住了,始终没搞明白是啥问题,后在网上查询资料终找到问题之所在并解决该问题。现将问题的分析及解决方案贴出来:

1、在子线程中无法进行UI的更新,如果表象更新成功那只是一个幻象。因为在子线程中,代码执行完毕后会自动进入主线程,从而执行子线程中UI更新的函数,这个过程是非常快速的,导致大家误以为子线程可以更新UI。如果子线程一直在运行,那么主线程就无法获知子线程中更新UI的函数栈,从而无法更新UI。

2、在一些情况下能够在子线程中更新UI,这是因为在开辟线程时即可获取当前环境,比如点击按钮响应,实质上就是开辟了一个子线程,在这个子线程中能够及时对按钮的UI进行更新(例如换标题、背景等)。

综上所述,对于UI的更新要在主线程中执行。

转载于:https://www.cnblogs.com/eric-liu/p/4389936.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值