J'ai essayé de résoudre ce problème. Fondamentalement, j'utilise la fonction UIColor RGB de commodité pour retourner un UIColor pour teindre mon UINavigationBar, UIToolbar et d'autres objets. Cependant, pour une raison quelconque dans Instruments, il continue à dire que j'ai une fuite de mémoire chaque fois que je charge un UIView. Toute aide serait appréciée. J'ai simplifié le code ici pour plus de clarté. Voici ma fonction (la fonction a le RVB et Alpha en tant que variables) qui est situé dans une classe mondiale singleton:UIColor Memory Leak Issue
- (UIColor *)returnSelectedColor{
return [UIColor colorWithRed:(100)/255.0 green:(100)/255.0 blue:(100)/255.0 alpha:(1.0)];
}
Dans mon RootViewController je mets cela dans le viewWillAppear (parfois teinte peut changer entre les deux appels mais je essayé ViewDidLoad mais le problème était toujours là). J'ai essayé deux approches différentes pour résoudre ce problème mais la fuite est toujours présente.
La première approche était de définir la teinte lorsque la vue apparaît comme ceci:
self.navigationController.navigationBar.tintColor=[[GlobalData sharedGlobalData] returnSelectedNavigationColor];
La deuxième approche était de créer une propriété UIColor pour la vue, réglez-le sur UIColor désiré, puis définissez la navigationbar Teinte à cette propriété, lorsque la vue se ferme, je libère la propriété. Cette approche provoque également une fuite de mémoire. Voici le code:
if(self.navigationToolbarColor!=nil){
[self.navigationToolbarColor release];
}
self.navigationToolbarColor=[[[GlobalData sharedGlobalData] returnSelectedNavigationColor] retain];
self.navigationController.navigationBar.tintColor=self.navigationToolbarColor;
Quelqu'un a-t-il une idée de ce que pourrait être le problème? Merci d'avance.
Merci pour la réponse. Cependant j'ai essayé cela mais j'ai toujours la même fuite de mémoire. La première approche que j'ai utilisée n'a pas de retenue (sans propriété) et donne une fuite de mémoire. J'ai essayé d'utiliser la propriété sans retenir comme vous l'avez suggéré et cela donne aussi une fuite de mémoire.Je pensais juste à quelque chose, est-ce que cela pourrait être parce que ma fonction est dans un objet singleton? –
Non, ce n'était pas ça. J'ai essayé de le faire directement au lieu d'appeler une fonction et toujours obtenir une fuite de mémoire: self.navigationToolbarColor = [UIColor colorWithRed: (39) /255.0 vert: (64) /255.0 bleu: (139) /255.0 alpha: (1.0)] ; Dois-je relâcher l'UIColor quelque part après l'avoir assigné à la teinte du contrôleur de navigation? Je ne pensais pas que c'était nécessaire puisque c'est censé être un objet auto-libéré. Des indices ou des idées seraient utiles. –