Dans l'objective C, lorsque vous présentez une nouvelle scène, comment supprimez-vous l'ancienne scène?

Je suis nouveau à Objective-C, donc je peux utiliser la mauvaise méthodologie pour présenter la scène en premier lieu, mais au moment où je présente ma nouvelle scène, la vieille scène peut être vue à travers elle.

- (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]; } 

Y at-il quelque chose que je dois d'abord écrire avant la méthode presentScene qui supprime la scène actuelle?

Désolé si c'est une question très basique, j'ai déjà googlé et cherché des exemples, mais aucun ne semble avoir un code supplémentaire qui me manque ce qui suggère que je présente probablement la scène mal en premier lieu.

Bonnes nouvelles! Vous n'avez pas besoin d'écrire quoi que ce soit pour supprimer l'ancienne scène. Il est supprimé automatiquement puisque Sprite Kit fait tout le désallocation pour vous. Cependant, si vous en avez besoin, vous pouvez faire un " didMoveFromView " supplémentaire dans la méthode didMoveFromView .

Maintenant, les gens dans le passé ont rapporté ce que vous traversez. Mon conseil est plutôt de faire la transition entre SKScenes, transition entre SKViews qui présentent leur propre SKScene. De cette façon, vous vous assurerez que TOUT est automatiquement libéré en gardant le tout séparé. Voir cette réponse , je pense que cela vous aidera beaucoup.

Bonne chance!

Vous n'avez pas besoin d'écrire de code pour supprimer l'ancienne scène. Sprite Kit le fera lui-même. Cependant, si vous voulez le faire, vous pouvez faire ce qui suit:

  [skView presentScene:nil]; 

Aussi la question de ce stackoverflow peut vous clarifier davantage.