我已经能听到一千名 iOS 开发者的痛苦内心。
不,我不是菜鸟。
为什么 -drawRect 对于 UITableView 的性能比拥有多个视图更快?
我知道合成操作是在 GPU 上进行的。但是合成是一次性的操作;一旦层被提交到内存,它与缓存缓冲区没有什么不同,从 GPU 的角度来看,它被转换进出视图。将此与在 drawRect 中使用 Core Graphics 进行比较,后者在 CPU 上使用未知数量的操作来生成最终被缓存在 CALayers 中的像素。如果它最终都被缓存和展平,有什么区别?
此外,如果您正确处理单元重用,则不需要在每次调用 -cellForRowAtIndexPath 时重新生成视图。事实上,通过 UIView/CALayer 对象缓存状态数据(字体、字体大小、文本颜色、属性等)可能比在 -drawRect 期间不断地重新创建它们更有性能优势。
为什么对drawRect如此狂热?有人可以给我指点吗?