2010-09-09 15 views
1

.h fichiermémoire UIImage fuite

UIImage *ownImg; 

@property (nonatomic, retain) UIImage *ownImg; 

fichier .m

Dans la méthode viewWillAppear:

UIImage *myImage2 = [UIImage imageNamed:@"thumbnail.png"]; 

self.ownImg = myImage2; 

C'est une fuite dans ownImg, quelqu'un sait pourquoi il fuit?

BTW, quelle est la différence d'utiliser self.ownImg et sans le soi.

Merci.

Répondre

3

Appel

ownImg = myImage2; 

est juste une mission qui définit simplement les pointeurs. Mais appeler

self.ownImg = myImage; 

appellera un setter @synthesized qui contient un retain. (Je suppose que vous avez le @synthesize() pour le propreImg.)

Parce que vous utilisez une méthode de setter qui conserve, vous devrez le libérer quelque part. Essayez de placer cela dans le override pour la méthode de déchargement, ou si une classe non-nib le place dans le dealloc.

+0

Je fais synthétisé ownImg. Dans viewDidUnload j'écris self.ownImg = nil; Dans dealloc [version propreImg]; Peut-être parce que j'affecte la valeur dans viewWillAppear pour provoquer la fuite de mémoire? Donc, je devrais vérifier si le self.ownImg! = Nil puis le relâcher avant de l'assigner à nouveau? Merci. – Water7

+0

Utilisez simplement self.owning = newThing; Cela libérera l'ancien, conservera le nouveau et placera le pointeur sur la nouvelle adresse. Ces méthodes synthétisées cachent beaucoup de code. –