Maison > Questions et réponses > le corps du texte
Cliquez sur le bouton de la page 1 pour passer à la page 2. A ce moment, la mémoire augmente de 5 Mo. Cliquez ensuite sur le bouton de la page 2 pour fermer la page 2. A ce moment, la méthode dealloc de la page 2 est exécutée, mais. la mémoire de 5 Mo n'est pas libérée. Pourquoi?
La mémoire sous ARC n'est-elle pas libérée à temps ?
Comment devrions-nous juger si un contrôleur de vue ou un objet est réellement libéré ?
Remarque : j'ai vérifié l'utilisation de la mémoire via la session de débogage de Xcode.
世界只因有你2017-07-03 11:45:05
Ajoutez le code suivant à la classe et jugez de l'état de publication de cette classe en regardant s'il existe un journal de la classe lorsqu'elle est supprimée :
1 2 3 4 5 |
|
Par exemple, le journal du nom de la classe MyViewController
, 如果释放成功的话会有dealloc MyViewController
.
Ensuite, déboguez à nouveau pour découvrir la cause.
Situation possible :
Quelque part strong
cette classe est référencée
在block
中直接使用self
(应该使用__weak typeof(self) weakSelf = self
,然后在block中使用weakSelf
)
巴扎黑2017-07-03 11:45:05
Le contrôleur réécrit la méthode -(void)dealloc
, vérifiez si la méthode est appelée lorsque le contrôleur rejette ou apparaît.
Utilisez analyser pour analyser la mémoire de l'application
Si vous utilisez Xcode version 8.0 ou supérieure, vous pouvez afficher la carte mémoire.