Это все детали реализации Apple, поэтому я точно не знаю. Кроме того, разные классы представлений будут иметь разные отношения со своим слоем.
Например, UIImageView
- это явно задокументированный до , а не вызов drawRect:
. Возможно, это связано с тем, что установка изображения фактически обновляет свойство слоя contents
напрямую, без использования методов рендеринга.
Тем не менее, я думаю, что основное поведение UIView
заключается в том, что setNeedsDisplay
просто перенаправляет вызов на уровень. Затем, когда drawLayer:inContext:
вызывается в представлении, он устанавливает контекстный материал UIGraphics
и вызывает drawRect:
.