J'ai eu cette erreur de XCode:Pourquoi ai-je des problèmes de mémoire?
objc[8422]: FREED(id): message release sent to freed object=0x3b120c0
I googlé et trouver ce qui est lié à la mémoire. Mais je ne sais pas quelle ligne de code je vais mal, des idées? Après avoir lancé mon application en simulateur, une deuxième erreur s'affiche, pas d'autre erreur que l'erreur ci-dessus.
@implementation MyAppDelegate
@synthesize window;
@synthesize viewController;
- (void)applicationDidFinishLaunching:(UIApplication *)application {
// Override point for customization after app launch
[window addSubview:viewController.view];
[window makeKeyAndVisible];
[self changeScene:[MainGameMenuScene class]];
}
- (void)dealloc {
[viewController release];
[window release];
[super dealloc];
}
- (void) changeScene: (Class) scene
{
BOOL animateTransition = true;
if(animateTransition){
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.5];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:window cache:YES]; //does nothing without this line.
}
if(viewController.view != nil) {
[viewController.view removeFromSuperview]; //remove view from window's subviews.
[viewController.view release]; //release gamestate
}
viewController.view = [[scene alloc] initWithFrame:CGRectMake(0, 0, IPHONE_WIDTH, IPHONE_HEIGHT) andManager:self];
//now set our view as visible
[window addSubview:viewController.view];
[window makeKeyAndVisible];
if(animateTransition){
[UIView commitAnimations];
}
}
puis-je conserver à la place controller.view avant removeFromSuperview? – Tattat
ne devrait pas avoir besoin de le conserver ou de le libérer - en particulier si vous êtes sur le point de le remplacer par une nouvelle vue alloc'd. – dstnbrkr