[Réglé]Optimisation: UITableView + UIImage
Hello la communauté CocoaCafé,
Tout d'abord je tiens à préciser que tout fonctionne bien à l'heure actuelle, j'ai une UITableView, et dans chaque cellule j'ai des UILabel et d'une UIImageView. Toutes les images s'affichent correctement, à la bonne place, chaque image correspond bien à la bonne annonce.
Dans un souci d'optimisation j'aimerais régler le problème de la lenteur quand on doit scroller la UITableView. J'ai pu m'apercevoir en testant que ce souci de lenteur venait de mon image.
Après avoir faire plusieurs recherches sur ce forum je suis tombé sur ce post de Larme:
Chargement d'images + Asynchrone + UITableView
#define kBgQueue dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)
dispatch_async(kBgQueue, ^{
NSString* imgLink=[[_liste objectAtIndex:indexPath.row] objectAtIndex:1];
NSString* lienImg = [NSString stringWithFormat:@%@%@", _baseURL,imgLink];
NSURL* urlImg = [NSURL URLWithString:[lienImg stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
if([lienImg isEqual:_baseURL])
{
cell.imageOffre.image=[UIImage imageNamed:@no_photo.png];
}
else
{
cell.imageOffre.image=[UIImage imageWithData:[NSData dataWithContentsOfURL:urlImg]];
}
});
C'est la que je commence à avoir des soucis, d'une part les images mettent une bonne minute à se charger, et lors du scroll je me retrouve avec des images à la mauvaise position (exemple: une image de fer à lisser pour une offre de place de foot).
Je voudrait donc quelques conseils, notamment savoir est ce qu'il faut bien utiliser la manière asynchrone avec mes images pour régler ces soucis de lenteur lors du scroll s'il vous plait ?
PS: L'image (+ d'autres infos) est récupérée grâce à une requête effectuée en asynchrone via
[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
Réponses
Problème réglé, pour ceux qui auraient le même souci, j'ai utilisé cette méthode:
Tu aurais fait ça comment toi ?
La ça marche très bien, et j'ai le résultat attendu
Ca doit bien marcher sur ton simulateur ou sur un téléphone en wifi, mais dans la pratique bonjour la consommation mémoire et surtout réseau (et donc aussi le forfait de l'utilisateur et sa batterie).
Pfiou, j'ai toujours l'impression que l'attendu est bon, mais la méthode ne l'est pas ^^