No iOS, como fazer um cell.imageView atualizar seu conteúdo?

Eu estou experimentando emtableView:cellForRowAtIndexPath para definir uma imagem chamando

[self downloadImage:urlString andSetIntoCellImageView:cell]

e emdownloadImage, vai ligarNSURLConnection:sendAsynchronousRequest (iOS 5 e superior apenas) e no bloco de conclusão, defina a imagem usando

cell.imageView.image = [UIImage imageWithData:data];   // data is downloaded data

e funciona se emtableView:cellForRowAtIndexPath, aimageView é preenchido com uma imagem de espaço reservado fictícia - e eu me pergunto como a nova imagem é atualizada, é porsetNeedsDisplay fazer uma repintura? Mas se eu não definir a imagem do espaço reservado, a nova imagem não será exibida. Gostaria de saber qual mecanismo pode ser usado para mostrar a imagem?

Se eu usar

[cell.imageView setNeedsDisplay]

ou

[cell setNeedsDisplay];

no bloco de conclusão, não vai funcionar, e se eu usar

[self.table reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] 
                            withRowAnimation:UITableViewRowAnimationAutomatic];

no bloco de conclusão, fazendodownloadImage aceita aindexPath, vai ligartableView:cellForRowAtIndexPath novamente, e causar um loop infinito. Então, parece que eu preciso usar alguma tabela de hash para lembrar se a imagem já está na tabela de hash: se não, ligue paradownloadImage, e se na tabela de hash, simplesmente usá-lo, então não haverá loop infinito.

Mas há uma maneira fácil de fazer com que a imagem apareça? A definição de uma imagem de placeholder funciona, mas e se não o fizermos - por qual mecanismo o placeholder causa a atualização da imagem?

questionAnswers(2)

yourAnswerToTheQuestion