2010-08-14 5 views
0

Je dois utiliser une animation dans mon application iPad.Lorsque j'utilise les animations, la mémoire augmente et devient une exception..Lorsque je lance mon application, la taille de la mémoire est de 10 mb, une fois les animations démarrées il augmente la taille de la mémoire jusqu'à deux fois l'espace de lancement (il est de 30 mb). Je teste les allocations et les fuites tout est parfait mais j'ai quand même eu ce problème. Je ne sais pas pourquoi ça se passe. Mon code d'animation est comme suit. S'il vous plaît aidez-moi.Animations prenant de la mémoire supplémentaire

 [UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationDuration:0.5]; 
if ([currentView superview]) 
{ 

    [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:mainView cache:YES]; 
    [currentView removeFromSuperview]; 
    [mainView addSubview:nextView]; 

} 

[UIView commitAnimations]; 

Merci à l'avance, Sekhar Bethalam.

Répondre

0

Comment êtes-vous sûr que l'animation provoque la fuite? Que se passe-t-il lorsque vous ajoutez/supprimez des sous-vues sans l'animation? La fuite est-elle toujours là?

Où est nextView initialisé/libéré?

Qu'est-ce que if ([currentView superview]) est censé vérifier parce que je pense que ça retournera toujours True?

0

Je ne suis pas sûr si c'est la méthode elle-même qui augmente l'utilisation de la mémoire, mais probablement votre contrôleur de vue qui est chargé?

Essayez également d'ajouter ces lignes dans votre bloc d'animation car je pense qu'il est encouragé (s'il vous plaît corrigez-moi si je me trompe) [currentView viewWillAppear: YES]; [currentView viewDidAppear: YES]; [vue principale viewWillDisappear: YES]; [mainView viewDidDisappear: YES];

Je crois aussi setAnimationTransition est maintenant découragée dans iOS4 alors essayez peut-être à l'aide + (void) transitionWithView: (UIView *) Voir la durée: (NSTimeInterval) Options de durée: (UIViewAnimationOptions) animations options: (void (^) (void)) achèvement des animations: (void (^) (BOOL terminé)) achèvement

Questions connexes