J'ai UINavigationController contrôlant plusieurs vues. L'une des vues est composée de 20 pages déroulantes. Chaque page est construite à la volée à partir de UIViews en ajoutant des boutons, des étiquettes, des UIImageViews, etc. Lorsque cette UIView est retirée de la pile, l'utilisation de la mémoire reste la même. Par conséquent, il continue à augmenter si je continue à pousser/éclater cette vue.L'utilisation de la mémoire ne diminue pas - aucune fuite si
Dans mon dealloc, je suis en train de parcourir les 20 pages et de trouver chaque type d'objet qui a été ajouté via addSubview et de faire une release mais les instruments disent que mon utilisation de la mémoire ne baisse jamais! J'essaie d'utiliser 'retainCount' pour voir ce qui se passe avec les objets que je libère mais je ne reçois peut-être pas d'image réelle via retainCount. Pour certains éléments, retainCount montre 2 alors j'essaie de relâcher cet objet deux fois mais ensuite l'application plante. Si je le libère une fois qu'il fonctionne, mais l'utilisation de la mémoire ne descend jamais :(
Q1: Ai-je besoin de parcourir chaque élément puis de publier un élément sur cet élément? Pourquoi ne puis-je pas libérer un objet parent et tous les objets? contenue par elle obtiendrait libérés automatiquement
Q2: Est-retainCount un indicateur fiable
Débogué plus loin. Voici ce que j'ai trouvé jusqu'ici. J'ai un UIScrollView sur lequel j'ajoute 20 objets UIViews. Même 20 UIViews sont ajoutés à NSMutableArray. Les instruments me montrent que lorsque la vue est affichée, chacun des 20 UIView reste en place.D'accord, je pense que je dois avoir oublié de le 'libérer' de quelque part, alors il faut que le compte soit fini. J'ai trouvé en effet qu'il y avait un endroit. Donc juste après la ligne [self.scrollView addObject: page]; // page étant un UIView J'ai ajouté [libération de page]; Mais maintenant, après avoir libéré NSMutableArray lorsque je publie les accidents de l'application self.scrollView. – climbon
Après NSZombieEnabled et je vois cette erreur *** - [Communiqué CFString]: message envoyé à l'instance désallouées 0x3ea6f00 Trouvé NSStackLoggingNoCompact = 1 contribuerait à voir en quelque sorte la variable associée à l'adresse dans l'accident en utilisant « informations 0x3ea6f00 malloc-histoire ' Après cela, je vois une trace de la pile qui pointe vers une ligne dans ma vue de destination où j'alloue un NSMutableArray. Je passe ce tableau à la vue étant sauté. Je pensais que je devais juste "retenir" le tableau qui se passait, mais cela n'a pas aidé. App continuer à se bloquer et pointer sur la même ligne. Je n'ai jamais été bloqué si mal :( – climbon