La memory n'est pas libérée même la méthode dealloc même est appelée après avoir rejeté le controller de vue

Qu'est-ce que je fais, c'est que je crée beaucoup de UIView en arrière-plan et les garder dans un NSMutableArray à utiliser plus tard. Mais quand je rejette le controller de vue, je vérifie la memory dans Xcode et il semble que la memory ne soit pas libérée. J'ai vérifié; Le controller de vue est en cours de désaffectation.

Vérifiez s'il vous plait: entrez la description de l'image ici

Cela s'est produit après plusieurs montrant et rejetant le controller de vue. Certains d'entre eux sont libérés mais pas tous. Merci.

Désactivez l'option Enable Zombie Objects sous Modifier le schéma. Et essayez à nouveau.

Un zombie est un object qui a été désalloué, mais les references existent toujours et des messages lui sont encore envoyés.

Je pense que ce lien a plus d'informations pour vous Qu'est- ce que NSZombie?

Je suppose que vous utilisez arc, il peut donc être utile de le publier explicitement dans dealloc.

 -(void)dealloc { for(UIView *vw in self.arrayOfViews) { vw = nil; } self.arrayOfViews = nil; } 

Utiliser dealloc est un peu comme le bon vieux time (pré-arc), mais cela vous aidera à mieux gérer la memory. !important! -> N'appelez JAMAIS [super dealloc]; lors de l'utilisation de l'arc!

Dans la méthode dealloc, libérez toutes les vues que vous avez dans le tableau.

appelé la méthode ci-dessous dans votre controller de la méthode dealloc

 - (void)releaseViewArray { // Releasing views in the array for (UIView *view in _viewArray) { [view release]; } // Releasing the array that holding the views [_viewArray release]; }