iOS 渲染相关面试题

简介: iOS 渲染相关面试题

1、【高频面试题】屏幕卡顿的原因


主要有以下三种原因


  • CPU和GPU在渲染的流水线中耗时过长,导致从缓存区获取位图显示时,下一帧的数据还没有准备好,获取的仍是上一帧的数据,产生掉帧现象,掉帧就会导致屏幕卡顿
  • 苹果官方针对屏幕撕裂问题,目前一直使用的方案是垂直同步+双缓存区,可以从根本上防止和解决屏幕撕裂,但是同时也导致了新的问题掉帧。虽然我们采用了双缓存区,但是我们并不能解决CPU和GPU处理图形图像的速度问题,导致屏幕在接收到垂直信号时,数据尚未准备好,缓存区仍是上一帧的数据,因此导致掉帧
  • 在垂直同步+双缓存区的方案上,再次进行优化,将双缓存区,改为三缓存区,这样其实也并不能从根本上解决掉帧的问题,只是比双缓存区掉帧的概率小了很多,仍有掉帧的可能性,对于用户而言,可能是无感知的。


2、【面试题】UIView和CALayer的关系


  • UIView基于UIKit框架,可以处理用户触摸事件,并管理子视图
  • CALayer基于CoreAnimation,而CoreAnimation是基于QuartzCode的。所以CALayer只负责显示,不能处理用户的触摸事件
  • 从父类来说,CALayer继承的是NSObject,而UIView是直接继承自UIResponder的,所以UIVIew相比CALayer而言,只是多了事件处理功能,
  • 从底层来说,UIView属于UIKit的组件,而UIKit的组件到最后都会被分解成layer,存储到图层树中
  • 在应用层面来说,需要与用户交互时,使用UIView,不需要交互时,使用两者都可以


相关文章
|
7月前
|
API iOS开发
iOS面试关于runtime
iOS面试关于runtime
60 0
|
7月前
|
安全 开发工具 数据安全/隐私保护
iOS-面试之你做过支付没有?
iOS-面试之你做过支付没有?
45 0
|
7月前
|
设计模式 敏捷开发 前端开发
iOS面试
iOS面试
68 0
|
7月前
|
存储 缓存 编译器
iOS面试原理篇
iOS面试原理篇
30 0
|
12月前
|
存储 程序员 编译器
iOS每天让ChatGPT出五道面试题(25)
iOS每天让ChatGPT出五道面试题(25)
189 0
|
12月前
|
存储 缓存 编译器
iOS每天让ChatGPT出五道面试题(24)
iOS每天让ChatGPT出五道面试题(24)
124 0
|
12月前
|
算法 安全 Swift
iOS每天让ChatGPT出五道面试题(23)
iOS每天让ChatGPT出五道面试题(23)
189 0
|
12月前
|
存储 安全 Java
iOS每天让ChatGPT出五道面试题(22)
iOS每天让ChatGPT出五道面试题(22)
170 0
|
12月前
|
存储 缓存 安全
iOS每天让ChatGPT出五道面试题(21)
iOS每天让ChatGPT出五道面试题(21)
141 0
|
12月前
|
存储 前端开发 网络安全
iOS每天让ChatGPT出五道面试题(20)
iOS每天让ChatGPT出五道面试题(20)
113 0