2009-10-01 8 views
1

Je profile mon application iPhone avec l'instrument 'Activity Monitor'. Lorsque j'utilise UITableViews et que je le feuillette, je constate que l'utilisation de la mémoire de mon application augmente tout le temps que je défile. Lorsque je retourne à la vue précédente et que UITableViewController est désalloué, l'utilisation de la mémoire diminue un peu, mais pas où elle était précédemment. Mais l'instrument 'Leaks' ne trouve aucune fuite de mémoire, et l'analyseur statique n'en trouve pas non plus. J'ai également veillé à ce qu'il n'y ait jamais plus de 12 UITableViewCells alloués à tout moment, donc ceux-ci sont réutilisés correctement (les cellules sont également créées avec un autorelease approprié afin qu'elles soient désaffectées lorsqu'elles ne sont pas utilisées). Je suis également assez sûr que je n'ai pas de fuites de mémoire intégrées dans le code du UITableViewController correspondant.Comportement mémoire de/Possible fuite de mémoire dans UITableView

Est-ce un comportement normal, par ex. L'application libèrera-t-elle la mémoire qu'elle a réclamée plus tard, peut-être quand elle sera nécessaire ailleurs?

Vive et merci à l'avance

MrMage

Répondre

3

Est-ce que vous avez NSZombieEnabled? J'ai vu cette cause des résultats "incorrects" dans le profilage de la mémoire d'Instruments, car ces instances resteront bloquées.

+0

Merci beaucoup! Supprimer NSZombieEnabled a fait l'affaire. Une autre question: Lorsque NSZombieEnabled est défini et que vous démarrez mon application directement, par ex. pas de XCode, NSZombieEnabled sera-t-il toujours actif? J'espère que non, car j'ai envoyé mon application à Apple pendant que NSZombieEnabled était réglé ... – MrMage

+0

Au meilleur de ma connaissance, les zombies seront toujours activés. NSZombieEnabled est une variable d'environnement vérifiée par le runtime, ce n'est pas une chose XCode. – nall

+0

Je viens de vérifier moi-même: il ne sera pas actif. J'ai ajouté le code suivant: TTAlert ([[[NSProcessInfo processInfo] environnement] objectForKey: @ "NSZombieEnabled"]); Et il montrerait «OUI» lorsqu'il est exécuté à partir de XCode, mais «» lorsqu'il est exécuté directement à partir de Springboard. – MrMage