iOS RunLoop

2021-03-24  本文已影响0人  Nothing_xy

什么是RunLoop?

RunLoop内部结构

RunLoopMode内部结构

RunLoop和线程

默认情况下主线程的RunLoop原理

从上图中可以看出,RunLoop就是线程中的一个循环,RunLoop在循环中会不断检测,通过Input sources(输入源)和Timer sources(定时源)两种来源等待接受事件;然后对接受到的事件通知线程进行处理,并在没有事件的时候进行休息

RunLoop相关类

CFRunLoopRef

CFRunLoopModeRef

常见的几种模式

CFRunLoopObserverRef

RunLoop运行逻辑

2dbc55cb.jpg

RunLoop运用场景详情

NSTimer的使用方法在讲解CFRunLoopTimerRef类的时候详细讲解过,具体参考上边 2.3 CFRunLoopTimerRef。

有时候,我们会遇到这种情况:
当界面中含有UITableView,而且每个UITableViewCell里边都有图片。这时候当我们滚动UITableView的时候,如果有一堆的图片需要显示,那么可能会出现卡顿的现象。

怎么解决这个问题呢?

这时候,我们应该推迟图片的显示,也就是ImageView推迟显示图片。有两种方法:

* 1. 监听UIScrollView的滚动
  因为UITableView继承自UIScrollView,所以我们可以通过监听UIScrollView的滚动,实现UIScrollView相关delegate即可。

* 2. 利用PerformSelector设置当前线程的RunLoop的运行模式

 利用performSelector方法为UIImageView调用setImage:方法,并利用inModes将其设置为RunLoop下NSDefaultRunLoopMode运行模式。代码如下:
b2b20b35.jpg
上一篇 下一篇

猜你喜欢

热点阅读