En el objective C, al presentar una nueva escena, ¿cómo eliminar la escena anterior?

Soy nuevo en Objective-C, por lo que puede estar usando la metodología equivocada para presentar la escena en primer lugar, pero en el momento en que presento mi nueva escena, la escena antigua se puede ver a través de ella.

- (void)buttonClicked:(UIButton*)button { NSLog(@"Button %ld clicked.", (long int)[button tag]); WarScene *battle = [[WarScene alloc] initWithSize: CGSizeMake(1024,768)]; SKTransition *reveal = [SKTransition revealWithDirection:SKTransitionDirectionDown duration:1.0]; SKView * skView = (SKView *)self.view; [skView presentScene:battle transition:reveal]; } 

¿Hay algo que primero debo escribir antes del método presente de Clear que elimina la escena actual?

Lo siento si esta es una pregunta muy básica, ya he buscado en Google y buscado ejemplos, pero ninguno parece tener ningún código adicional que me falte, lo que sugiere que probablemente estoy presentando la escena mal en primer lugar.

¡Buenas noticias! No tiene que escribir nada para eliminar la escena anterior. Se elimina automáticamente ya que Sprite Kit hace todo lo que desasigna por ti. Sin embargo, si lo necesita, puede hacer un " didMoveFromView " adicional en el método didMoveFromView .

Ahora, la gente en el pasado ha informado sobre lo que está pasando. Mi consejo es que en lugar de hacer la transición entre SKScenes, la transición entre SKViews que presentan su propio SKScene. De esta manera, se asegurará de que TODO se desasigne automáticamente manteniendo todo separado. Mira esta respuesta , creo que te ayudará mucho.

¡La mejor de las suertes!

No es necesario que escriba ningún código para eliminar la escena anterior. Sprite Kit lo hará por sí mismo. Sin embargo, si desea hacerlo, puede hacer lo siguiente:

  [skView presentScene:nil]; 

También esta pregunta de stackoverflow puede aclararte más.