做IM开发时,有个场景是:数据异步处理,回到主线程刷新UI、展示消息给用户看到.当用户短时间内收到很多条消息时,我们不想对UI进行频繁而累赘的更新,理想的情况是当主线程繁忙时将所有的改变联结起来。此时,可以利用联结的优势(在异步线程上调用 dispatch_source_merge_data 后,就会执行 dispatch source 事先定义好的 handler )。使用 DISPATCH_SOURCE_TYPE_DATA_ADD,将刷新UI的工作拼接起来,短时间内做尽量少次数的刷新。

伪代码

执行结果

欢迎大家分享其他思路.