2010-02-03 3 views
1
-(IBAction)startGameButtonClicked:(id)sender{ 
    //gameViewController = NULL; 
    //[gameViewController release]; 
    //[gameViewController dealloc]; 

    if(!gameViewController){ 
     gameViewController = [[GameViewController alloc] initWithNibName:@"GameViewController" bundle:nil]; 
    } 


    appDelegate.ScoreID=0; 
    [gameViewController resetLevel]; 
    [gameViewController resetTheGame]; 
    [self.navigationController pushViewController:gameViewController animated:YES]; 
} <---Says the leak is here 
+0

Libérez-vous le gameViewController plus tard? Et les méthodes resetLevel et resetTheGame sont-elles propres? –

Répondre

1

Chaque fois que le bouton est cliqué, vous créez un nouveau gameViewController et le placez dans self.navigationController.

Vous ne voulez pas en créer un nouveau à chaque fois.

+0

comment je fais ça? – Steve

+0

Faites de 'gameViewController' un ivar (variable d'instance) avec des propriétés et référencez-le comme' self.gameViewController'. –

2

mis en place gameViewController comme une propriété dans le .h

@property(nonatomic,retain) GameViewController *gameViewController; 

et dans le .m

@synthesize gameViewController 

utilisent alors la propriété lors de l'affectation

self.gameViewController = [[GameViewController alloc] initWithNibName:@"GameViewController" bundle:nil]; 

et libérer au fin

[self.navigationController pushViewController:gameViewController animated:YES]; 
[gameViewController release]; 
+0

merci beaucoup! – Steve

+0

maintenant il met juste en évidence la dernière ligne comme une fuite [version de gameViewController]; – Steve