NSImage dans NSTableView
Bonjour,
J'ai un petit soucis de gestion mémoire.
Je charge des images ds ma tableView, mais ces images sont online donc j'utilise :
Bon pas de soucis pour le chargement (quoi que un peu long au lancement de l'app et et je n'ai testé qu'avec 2 row alors qu'il risque d'y en avoir plus de 150.. Puis, j'ai lancé Activity Monitor et me suis aperçu que à chaque fois que je clique sur une row, il me rajoute 0.1Mo à la mémoire qu'utilise mon application
J'ai donc essayé un [imageF release] juste après theValue = imageF; mais ça ne peut évidemment pas marcher (d'ailleurs ça n'a pas marché )
Alors si quelqu'un voit une solution ?
Merci.
Louka
J'ai un petit soucis de gestion mémoire.
Je charge des images ds ma tableView, mais ces images sont online donc j'utilise :
<br />NSImage *imageF = [[NSImage alloc] initWithContentsOfURL:[NSURL URLWithString:- (id)tableView:(NSTableView *)aTableView<br /> objectValueForTableColumn:(NSTableColumn *)aTableColumn<br /> row:(int)rowIndex<br />{<br /> id theRecord, theValue;<br /> theRecord = [test objectAtIndex:rowIndex];<br />if([[aTableColumn identifier] isEqualToString:@"icon"]){<br />[theRecord objectForKey:@"icon"]]];<br />theValue = imageF;<br />}<br />return theValue;<br />}
Bon pas de soucis pour le chargement (quoi que un peu long au lancement de l'app et et je n'ai testé qu'avec 2 row alors qu'il risque d'y en avoir plus de 150.. Puis, j'ai lancé Activity Monitor et me suis aperçu que à chaque fois que je clique sur une row, il me rajoute 0.1Mo à la mémoire qu'utilise mon application
J'ai donc essayé un [imageF release] juste après theValue = imageF; mais ça ne peut évidemment pas marcher (d'ailleurs ça n'a pas marché )
Alors si quelqu'un voit une solution ?
Merci.
Louka
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
[tt]
[theRecord objectForKey:@icon]
[/tt]
Dejà , cette ligne telle quelle n'a aucune utilité, la valeur de retour n'est pas exploitée ? Mais bon c'est peut-être du au problème de copier/coller aussi. D'ailleurs, c'est surement ça, un crochet ouvert pour trois fermés...
Si pour chaque row tu as une icône différente (theRecord différent), le plus propre est peut-être de ne télécharger l'image qu'une fois ?
genre tu rajoutes une clé à ton dictionary représentant ta 'row' (ou tu le stoques autre part dans un autre container, je sais pas comment sont organisées tes données).
Genre un dico avec allImages un NSMutableDictonary initialisé à vide au lancement de l'appli et releasé quand tu quittes.
Bon c'est un exemple vite fait, qui te permet de mémoriser de côté les images déjà chargées pour éviter de les charger à chaque fois. Mais comme je ne sais pas exactement ce que tu cherches à faire...
J'ai essayé :
Allez encore merci Ali