2010-08-17 6 views
0

Je suis novice dans le domaine de l'objectif-c et je développe actuellement une petite application.removeFromSuperview et gestion de la mémoire

J'ai quelques problèmes de gestion de mémoire et je veux poser cette question particulière. J'ai un bouton, l'apparence dont je change:

for (UIView *subview in button.subviews) 
{ 
if (![subview isKindOfClass:[UIImageView class]]) // don't remove UIImageView, otherwise it will not be able to set background 
    { 
     [subview removeFromSuperview]; 
    } 
} 
[button setBackgroundImage: [[imageArray objectAtIndex:itemNumber] forState:UIControlStateNormal]; 
/* 
    creating myView and myLabel here 
*/ 
[button addSubview:myView]; 
[button addSubview:myLabel]; 
[myLabel release]; 
[myView release]; 

Le code fait plus complexe, mais il n'y a pas des fuites. Malgré cela, le nombre d'objets alloués et la mémoire utilisée continuent de croître chaque fois que je le fais. Comment puis-je résoudre ce problème?

Merci beaucoup

+0

ressemble à votre problème avec la création de l'étiquette. Le reste semble effectivement correct ... –

+0

quel problème peut-il y avoir? Je crée un label dans le code, lui assigne du texte depuis le tableau (ne crée aucun objet) puis libère l'étiquette. Je pense qu'après [subview removeFromSuperview] runtime garde ces données en mémoire, et je ne peux rien faire avec ((( – Burjua

Répondre

1

Comment avez-vous mesuré? avec des instruments? avez-vous vérifié 'objets encore vivants' ou mesurez-vous la mémoire totale/objets alloués. il existe une différence.

+0

Oui, j'utilise des instruments et vérifie des objets vivants et de la mémoire. encore, mais la quantité de mémoire augmente – Burjua