J'ai une application basée sur le contrôleur de navigation qui peut être active pendant une période relativement longue et peut charger plusieurs écrans, en en revisitant certains au cours de sa vie - une application métier. Quand je pousse un écran, j'attribue de la mémoire; quand je reviens (pop), je dois m'assurer que la mémoire n'est pas perdue.Comptabilité de l'utilisation de la mémoire dans une application basée sur un contrôleur de navigation;
Maintenant dans les fuites, j'ai une ardoise propre. Pas de fuite de mémoire, pas si difficile à faire avec la fonction d'analyse statique 10.6 et confirmé à l'aide d'instruments. Vérification manuelle, je suis sûr que je libère tout alloué dans viewWillAppear dans viewWillDisappear; tout alloué dans viewDidLoad dans viewDidUnload; tout alloué autrement dans dealloc.
J'ai utilisé NSZombiesEnabled en développement, mais je ne l'ai pas encore activé.
Lors de l'exécution sous Object Allocation, cependant, je constate une augmentation de l'utilisation de la mémoire. En entrant dans une nouvelle vue, je vois la mémoire augmenter mais ne pas diminuer de la même quantité lors de la navigation arrière. Ce n'est pas non plus simplement que le système ne se désengage pas immédiatement, lorsqu'il reste un certain temps, la mémoire reste statique. Ce comportement est vu sur chaque vue. Quelles techniques puis-je utiliser pour isoler cette mémoire?
Quelles techniques puis-je utiliser pour isoler cette mémoire? Devrais-je viser le retour de l'application à une ligne de base après chaque vue? Comment puis-je isoler les rapports de mémoire utilisés par des sous-systèmes tels que Core Data, où je me base sur des failles pour charger des objets et ne pas essayer de les manipuler explicitement, et le code sur lequel j'ai le plein contrôle?
Merci - je craignais la réponse était « juste froid » ... mais il se sent mal à voir augmenter la mémoire comme ça. –
Je sais :) Je fais ma première "grande" application et je me suis vraiment inquiété de ce que l'iPhone pourrait prendre en termes de gestion de la mémoire bâclée. Im tirant dans des listes de 1400 - 16.000 articles, empilant UITableViews personnalisés dans les contrôleurs de navigation 7-8 à la fois, préchargeant jusqu'à 20 pages pour un effet scrollView/pageControl, en utilisant une configuration de base de données semi-compliquée et l'analyse des fichiers XML dans différents threads. Je pensais que ce serait un cauchemar de gestion de la mémoire :) Je suis presque fini et la mémoire ne dépasse jamais 3 Mo. Je pense que l'iPhone 1G a environ 20 Mo et la 3G S a plusieurs fois plus. – RickiG
Quand vous dites qu'il ne cesse d'augmenter, jusqu'où ça va en MB avant qu'il ne s'arrête? – RickiG