尽管这两个 API 位于堆栈的不同级别,但 CALayer 的 shouldRasterize 和 UIView 的 drawRect: 都实现了相同的目标 - 渲染位图并缓存它以供将来重用。在这两种情况下,如果视图/层需要重绘,缓存的版本就会失效。我认为唯一的区别是位图是如何绘制的。drawRect: 是使用 CPU 完成的,而 CALayer 的 shouldRasterize 是由 Core Animation 选择使用的任何东西完成的,可能是 GPU。
人们可以评论这两个 API 之间的任何其他区别吗?