1. 需要注意,UIView的-drawRect:方法没有默认的实现,而且如果UIView检测到-drawRect: 方法被调用了,它就会为视图分配一个寄宿图,这个寄宿图的像素尺寸等于视图大小乘以 contentsScale的值。所以如果不需要寄宿图,有没有其他的绘制需求,那么不要在UIView的子类中写一个-drawRect:方法,因为会造成CPU和内存资源的浪费。
2. UIView在视图显示在屏幕的时候会自动调用CALayer的display方法,然后视图会在默认的基础上根据设置进行重绘。CALayer则不会在在屏幕上展示的时候自动刷新,控制权完全交给了开发者,第一次显示的时候只会是一个默认状态。
3. CALayerDelegate 除非创建了一个单独的图层,一般不会用到,UIView已经隐式的在创建Layer的时候把delegate设置为self并管理相关的重绘工作。