Mon application a une vue avec trois UIImageViews
. Il y a environ 150 images en tant que fichiers de ressources, chacune d'un .jpg d'environ 24k. L'application affichera toutes les images, mais seulement trois à la fois. À chaque fois que je clique sur le bouton pour charger trois images supplémentaires dans le UIImageViews
, la colonne "Overall Bytes" dans Instruments augmente d'environ 700K, jusqu'à ce que j'obtiens finalement un avertissement de mémoire faible, puis l'application plante. D'une certaine manière, la mémoire que j'utilise pour chaque chargement de trois images n'est pas libérée. J'ai fait des recherches sur google et essayé tous les moyens possibles, mais je n'ai pas réussi et j'ai besoin d'aide.Chargement de nouvelles images dans UIImageView, la mémoire des images précédentes n'est pas publiée
J'ai essayé ceci:. (Ce code fait partie de l'action de charger trois autres images Les trois ImageViews sont imgShownLeft
, imgShownMiddle
et imgShownRight
Ce sont les variables d'instance, je dois d'abord mettre currentImage
dans les trois UIImageViews
.. , puis mis previousImage
dans celui de gauche et nextImage
dans la droite:
NSString *strImageToSet = [[imgNamesArray objectAtIndex:currentImage] stringByAppendingFormat:@".jpg"];
UIImage *img = [UIImage imageNamed:strImageToSet];
[imgShownMiddle setImage:img];
[imgShownLeft setImage:img];
[imgShownRight setImage:img];
NSString *strPreviousImage = [[imgNamesArray objectAtIndex:previousImage] stringByAppendingFormat:@".jpg"];
img = [UIImage imageNamed:strPreviousImage];
[imgShownLeft setImage:img];
NSString *strNextImage = [[imgNamesArray objectAtIndex:nextImage] stringByAppendingFormat:@".jpg"];
img = [UIImage imageNamed:strNextImage];
[imgShownRight setImage:img];
alors j'ai essayé ceci: au lieu de:
UIImage *img = [UIImage imageNamed:strImageToSet];
J'utilisé:
UIImage *img = [[UIImage alloc] initWithContentsOfFile:strImageToSet];
et affecté img
au UIImageViews
de la même manière, suivie par [img release];
Alors j'ai essayé:
UIImage *img = [[[UIImage alloc] initWithContentsOfFile:strImageToSet] autorelease];
Alors j'ai essayé:
img = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:[imgNamesArray objectAtIndex:currentImage] ofType:@"jpg"]];
Mais dans tous les cas, les besoins en mémoire ont augmenté à chaque exécution de cette action.
Je sais qu'il est possible de garder trois images chargées à la fois sans stocker 150 images en mémoire! Qu'est-ce que je fais mal?
Merci pour tout commentaire. /SD
Avez-vous trouvé une solution à ce problème? –