setNeedsLayout y setNeedsDisplay

¿Cuál es la diferencia real entre los métodos de setNeedsLayout y setNeedsDisplay ?

Como es habitual, la documentación es confusa sobre esto.

En realidad, la documentación es bastante clara al respecto:

  • setNeedsLayout diseñará subvistas

    Llame a este método en el hilo principal de su aplicación cuando desee ajustar el diseño de las subvistas de una vista.

  • setNeedsDisplay solicitará un redibujado de su vista ( drawRect: etc.).

    Puede usar este método o setNeedsDisplayInRect: para notificar al sistema que el contenido de su vista debe ser redibujado.