En iOS, ¿cómo hacer que un cell.imageView actualice su contenido?

Estoy experimentando entableView:cellForRowAtIndexPath para establecer una imagen llamando

[self downloadImage:urlString andSetIntoCellImageView:cell]

y endownloadImagellamaráNSURLConnection:sendAsynchronousRequest (Solo iOS 5 y superior), y en el bloque de finalización, configure la imagen utilizando

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

y funciona si entableView:cellForRowAtIndexPath, laimageView se rellena con una imagen de marcador de posición ficticia, y me pregunto cómo se actualizará la nueva imagen, ¿es así?setNeedsDisplay hacer un repintado? Pero si no configuro la imagen del marcador de posición, la nueva imagen no se mostrará en absoluto. Me pregunto qué mecanismo se puede usar para hacer que muestre la imagen.

Si yo uso

[cell.imageView setNeedsDisplay]

o

[cell setNeedsDisplay];

en el bloque de finalización, no funcionará, y si uso

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

en el bloque de finalización haciendodownloadImage acepta elindexPathllamarátableView:cellForRowAtIndexPath de nuevo, y provocar un bucle infinito. Así que parece que necesito usar alguna tabla hash para recordar si la imagen ya está en la tabla hash: si no, llamadownloadImage, y si está en la tabla hash, simplemente úselo, para que no haya un bucle infinito.

¿Pero hay una manera fácil de hacer que la imagen se muestre? La configuración de una imagen de marcador de posición funciona, pero ¿qué sucede si no lo hacemos? ¿Con qué mecanismo hace que el marcador de posición cause la actualización de la imagen?

Respuestas a la pregunta(2)

Su respuesta a la pregunta