Objeto de juego con composición y CCSpriteBatchNode

Actualmente estoy desarrollando un juego con cocos2d y box2d en iPhone.
Leí muchos artículos sobre la organización del código del juego, la estructura de los objetos del juego, etc. Empecé a desarrollar mis objetos del juego heredándolos de una clase base que heredaba de CCSprite. Tuve un CCSpriteBatchNode para dibujar todos los elementos del juego, con los que el jugador puede interactuar, en un solo sorteo. Esto fue fácil porque mi clase de artículo heredó indirectamente de CCSprite, por lo que fácilmente podría agregar mis artículos al CCSpriteBatchNode. Y encima de eso, podría confiar en cocos2d para retener mis objetos.

Después de leer los artículos, entendí la necesidad de refactorizar mi código con un estilo más orientado a la composición en lugar del estilo de herencia. Así que opté por una clase base de GameObject heredada de NSObject y con propiedades como una o más CCSprite, una b2Body, etc.

El problema al que me enfrento ahora es que ya no puedo agregar directamente mi GameObject a CCSpriteBatchNode. Primero pensé que podría solucionar el problema fácilmente agregando la propiedad sprite de GameObject al CCSpriteBatchNode. Está bien, pero ¿quién retiene el objeto que posee el CCSprite? ¿Cómo puedo acceder fácilmente al objeto original desde CCSprite (son correctos UserData / Object)?

¿Debo crear una matriz que retenga mis artículos? Me gustaría saber cómo usaría un CCSpriteBatchNode con una estructura de objeto de juego de este tipo.

Ya hay unhilo sobre eso que no tiene respuesta y realmente me gustaría escuchar sobre el tema. No es una respuesta directa sino algunos elementos para ir más allá.

Gracias.

Respuestas a la pregunta(1)

Su respuesta a la pregunta