2010-04-21 2 views
0

Lorsque je visualise la mémoire de mon application dans l'outil de mémoire xcode, je vois que quelque chose appelé QuartzCore fuit plusieurs fois. Chaque fuite varie de 16 à 80 octets.Pourquoi QuartzCore a-t-il signalé une fuite dans mon application?

Mon code ne fait pas référence à cela. tout est dû à UIApplicationMain(). Donc je ne sais pas comment contrôler ça. Des idées?

Merci.

+0

Outil de mémoire XCode: vous voulez dire Instruments? – Macmade

Répondre

1

Vous devez utiliser l'outil Leaks pour vous aider à trouver de la mémoire que vous avez involontairement échoué à nettoyer. Il se peut qu'il y ait de la mémoire que vous, ou les concepteurs de framework, vouliez intentionnellement conserver pendant toute la durée de fonctionnement d'une application. Les fuites ne le savent pas et les montreront comme des fuites. Si vous déterminez à partir de la trace de pile que ce n'est pas vous, alors vous ne pouvez rien y faire - même si vous préférez l'outil pour signaler zéro fuite.

+1

Les fuites ne montreront les objets comme des fuites que si rien ne les connaît plus. Ceci est très rarement intentionnel; il est juste d'appeler une telle fuite. Où les fuites tombent, c'est sur les objets que quelque chose * tient * pour toujours; cela peut ne pas être intentionnel (et peut donc être une "fuite" dans le sens de la mémoire-utilisation-non-descente-like-it-should), mais Leaks ne le sait pas, et ne le montrera pas. –

+0

ouais, comme je l'ai dit – hooleyhoop

3

Utilisez-vous des instruments avec le simulateur? Le simulateur a ses propres fuites de mémoire - vous devriez tester les fuites sur l'appareil. Si elle fuit sur l'appareil, regardez la trace de la pile pour voir où vous avez alloué de la mémoire (ce n'est pas toujours évident, mais 99% du temps c'est une erreur avec votre code plutôt qu'avec le framework).

Questions connexes