Llamar a setNeedsDisplay: YES en la vista de alojamiento de capa no vuelve a dibujar la vista

Tengo una vista de alojamiento de capas configurada de esta manera en una costumbreNSView subclase:

[self setLayer:rootLayer];
[self setWantsLayer:YES];

Agregué todas las subcapas al árbol de capas después de llamarsetNeedsDisplay en cada subcapa El contenido de cada capa es proporcionado por undrawLayer:inContext método del delegado de mi capa.

Aquí está mi problema:

Después de inicializar mi vista, la vista se dibuja correctamente. Sin embargo, cuando el modelo ha cambiado y llamo[myCustomView setNeedsDisplay:YES]; desde mi controlador de vista eldrawLayer:inContext No se llama.

Ahora estoy confundido sobre cómo actualizar la vista:

¿Tengo que llamar alsetNeedsDisplay método en cada CALayer en el árbol de capas?No debería la llamada desetNeedsDisplay:YES en la vista de alojamiento de capas en sí misma, ¿desencadenar el redibujo del árbol de capas completo?

Gracias por tu ayuda.

Editar

He encontrado algo en la referencia de clase NSView

Una vista respaldada por capas es una vista respaldada por una capa Core Animation. Cualquier dibujo realizado por la vista se almacena en caché en la capa de respaldo. Configuraste una vista respaldada por capas simplemente invocando setWantsLayer: con un valor de YES. La clase de vista creará automáticamente una capa de respaldo para usted, y usted usa los mecanismos de dibujo de la clase de vista. Al usar vistas respaldadas por capas, nunca debe interactuar directamente con la capa.

Una vista de alojamiento de capa es una vista que contiene una capa de animación principal que tiene la intención de manipular directamente. Puede crear una vista de alojamiento de capas creando instancias de una instancia de una clase de capa Core Animation y configurando esa capa utilizando el método setLayer: de la vista. Después de hacerlo, invoque setWantsLayer: con un valor de YES. Cuando utilice una vista de alojamiento de capas, no debe confiar en la vista para dibujar, ni debe agregar subvistas a la vista de alojamiento de capas.

enlace a la documentación

En mi caso, tengo una vista de alojamiento de capas. Entonces, ¿eso significa que debo activar el redibujo manualmente? ¿Debo implementar un método pseudo drawRect en el NSView personalizado para llamar al setNeedsDisplay apropiado en los CALayers que cambiaron?

Respuestas a la pregunta(2)

Su respuesta a la pregunta