CALayer
的存在意义
layer渲染,view负责用户交互,这是基于单一职责原则的设计。在iOS 和 Mac OS 两个平台下,事件和用户交互存在比较大的差异,比如Mac OS的用户交互可以通过鼠标/键盘控制,而iOS通过手势触摸。
如果将view与layer糅合在一起,做成通用的,里面判断的代码会一大堆,不利于各个平台的单独发展;如果view与layer糅合在一起后,平台各自维护一份,就会有大量重复的渲染层的代码。
所以,就抽取了CALayer用于跨平台。
modelLayer
与presentationLayer
的存在意义
设置frame、backgroundColor之类的属性,会先保存在modelLayer里面,渲染时间到了,才会同步到presentationLayer上。modelLayer起到一个缓冲区的作用,这样可以防止每设置一次属性,就重新渲染一次,大幅的提高了性能。