《iOS底层原理文章汇总》
上一篇文章iOS-底层原理34-内存管理(下)和RunLoop介绍了内存管理底层原理和RunLoop,本文接着介绍界面优化
1.卡顿原理:掉帧
双缓冲区,垂直同步信号VSync
后置缓冲区第二帧渲染耗时,第三帧显示信号VSync发送过来切换到前置缓冲区,渲染完正常显示,显示第四帧信号VSync发送切换到后置缓冲区,覆盖了第二帧,第二帧完美错过,过候不等,掉帧
2.卡顿检测
I.FPS检测卡顿
CADisplayLink
II.Runloop卡顿检测
监控runloop运行事务的耗时:事务的状态
III.微信卡顿检测工具:matrix
超时时间为2秒
IV.滴滴卡顿方案:DoraemonKit
3.实战优化项目
tableView,maskToBound圆角
A.预排版:提前计算,内存缓存
B.预解码:图片加载
SDWebImage中的图片预解码:新起一个编解码队列
查看imageView的编解码流程:编解码发生在主线程,给了主线程压力,可以像SDWebImage优化到子线程中
C.按需加载
D.异步渲染
UIView的drawRect前后,分别做了什么?
面试题:UIView和CALayer的关系
I.UIView的底层是通过CALayer来驱动的
II.UIView能够交互
III.UIView侧重于显示 layer侧重于内容的绘制
IV.UIView会成为CALayer的代理 UIView的显示交给CALayer的display方法进行渲染
Graver渲染流程
位图赋值
位图具有响应功能:WMGMixedView-->WMGCanvasControl-->WMGCanvasView-->WMGAsyncDrawView-->UIView,满足响应链机制