卡顿问题

导致卡顿问题的几种原因:

  • 复杂 UI 、图文混排的绘制量过大;

  • 在主线程上做网络同步请求;

  • 在主线程做大量的 IO 操作;

  • 运算量过大,CPU 持续高占用;

  • 死锁和主子线程抢锁。

FPS 是一秒显示的帧数,也就是一秒内画面变化数量。当FPS达到60,说明界面很流程,当FPS低于24,页面流畅度不是那么流畅。

线程的消息 事件是依赖于 NSRunLoop 的,所以从 NSRunLoop 入手,就可以知道主线程上都调用了哪些方 法。我们通过监听 NSRunLoop 的状态,就能够发现调用方法是否执行时间过长,从而判断出是 否会出现卡顿。

RunLoop 这个对象,在 iOS 里由 CFRunLoop 实现。简单来说,RunLoop 是用来监听输入源,进 行调度处理的。这里的输入源可以是输入设备、网络、周期性或者延迟时间、异步回调。

RunLoop 会接收两种类型的输入源:

  • 一种是来自另一个线程或者来自不同应用的异步消息;

  • 另一 种是来自预订时间或者重复间隔的同步事件。

posted @ 2021-05-10 16:10  KLAPT  阅读(58)  评论(0编辑  收藏  举报