2009-04-27 5 views
1

Je travaille actuellement sur une application qui affiche plusieurs UIView dans un UIScrollView. Ce UIScrollView est à l'intérieur d'un UIViewController.Suppression des sous-vues de UIScrollView et fuite de mémoire

Dans une boucle, je crée de nouveaux UIView s, autorelease et les ajoute à la vue déroulante. Est-ce que ceci pourrait être le problème?

Lorsque j'essaie de libérer le contrôleur de vue, toutes les sous-vues avec leurs étiquettes, images, etc. restent dans la mémoire.

Quelle serait la meilleure façon de se débarrasser de ces objets?

Répondre

2

Je pense que cela pourrait être ce qui se passe:

Lorsque vous ajoutez un UIView à un UIScrollView, le UIScrollView le conservera. Vous appelez également autorelease sur UIView, l'objet est maintenant conservé par UIScrollView et NSAutoreleasePool. Lorsque vous relâcherez viewController, le nombre de sauvegardes sera réduit de un, mais les objets ne seront pas libérés tant que vous n'aurez pas reçu l'appel de drain pour votre NSAutoreleasePool actuel. Peut-être n'essayez pas de libérer automatiquement les objets de la boucle. Ajoutez-les simplement à UIScrollView, puis libérez-les manuellement. De cette façon, UIScrollView sera le seul propriétaire de ces objets.