2009-01-24 6 views
4

Lorsque j'exécute mon application avec des fuites et que j'examine les détails étendus pour l'une des fuites, cela m'amène à une ligne particulière dans mon code, mais je ne sais pas quoi faire après ça!Développement de l'iPhone - prévention des fuites

Par exemple, Fuites montre une malloc à cette ligne

NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error]; 

Mais je ne sais pas ce que le problème est dans la déclaration! Quelqu'un peut-il me dire comment interpréter ces problèmes et éviter les fuites?

Merci. En ce qui concerne la question précédente que j'avais, NSZombieEnabled s'assure qu'aucun objet n'est désalloué, ce qui augmente l'utilisation de la mémoire. Donc, lors d'un test avec des fuites, assurez-vous que ce paramètre est supprimé de votre application. Pensé que cela pourrait aider quelqu'un.

Répondre

3

J'ai trouvé la réponse. La réponse de Fredrik m'a fait réfléchir. Je créais une instance de NSURLResponse et NSError que je passais ensuite à la méthode sendSynchronousRequest. Selon le document de gestion de la mémoire de l'iPhone, cela ne devrait pas être fait. Nous avons juste besoin de passer une référence aux objets NSURLResponse et NSError à la méthode et la méthode prend soin de créer et libérer les objets.

Espérons que cela aide quelqu'un d'autre. Merci beaucoup pour les réponses tout le monde.

1

Le volet Détails étendus vous donnera des traces de pile indiquant la pile à la fuite. Généralement, un bon point de départ est de regarder vos méthodes & la dernière méthode de votre code dans la pile et de voir ce que vous faites dans la mémoire là-bas, il semble que vous pourriez être en train de conserver un objet. Commencez ici pour l'instant

+0

Salut Colin. Le volet Détails étendus n'affiche pas la classe ou la méthode qui provoque des fuites dans le cas d'objets zombies. C'est la raison pour laquelle j'ai posté la question. Comment savoir où les objets zombies sont créés? Merci. – lostInTransit

+0

Pouvez-vous montrer une capture d'écran de ce que vous voyez? De plus, quelle est la version de l'iPhone OS que vous ciblez? –

1

Libérez-vous les objets de réponse et d'erreur après l'appel? Ceux-ci sont éventuellement attribués dans l'appel.

+0

Bonjour Fredrik. Si je libère les objets de réponse et d'erreur, il montre un malloc à cet endroit, encore une fuite! Je vais poster un peu plus de code et les journaux quand je reviens à mon mac. Merci. – lostInTransit

1

Une fuite dans la méthode que vous mentionnez ci-dessus était supposée être corrigée pour la version iPhone OS 2.2. Quelle version de l'iPhone OS utilisez-vous?

+0

J'utilise 2.1. Créé le projet avant la sortie de 2.2. Êtes-vous sûr que cela a été corrigé avec 2.2? Merci – lostInTransit

Questions connexes