Je suis le développement d'une application iOS 4 avec iOS 5.0 SDK et XCode 4.2.
J'ai à vous montrer quelques post des blogs dans un UITableView. Quand j'ai récupéré toutes les données du service web, j'utilise cette méthode pour créer une UITableViewCell:
- (BlogTableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString* cellIdentifier = @"BlogCell";
BlogTableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if (cell == nil)
{
NSArray* topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"BlogTableViewCell" owner:nil options:nil];
for(id currentObject in topLevelObjects)
{
if ([currentObject isKindOfClass:[BlogTableViewCell class]])
{
cell = (BlogTableViewCell *)currentObject;
break;
}
}
}
BlogEntry* entry = [blogEntries objectAtIndex:indexPath.row];
cell.title.text = entry.title;
cell.text.text = entry.text;
cell.photo.image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:entry.photo]]];
return cell;
}
Mais cette ligne:
cell.photo.image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:entry.photo]]];
il est tellement lent (à l'entrée.photo dispose d'une url http).
Est-il possible de charger cette image de manière asynchrone? Je pense que c'est difficile parce que tableView:cellForRowAtIndexPath est appelé très souvent.