I'll try to explain my self, I have ContactsViewController
that shows a table view with a list of contacts (the model is an array of Contact
objects), each cell display an image of a contact.
Currently what I do to populate the cell's UIImageView
is this:
1. I override the Contact
image property getter -
- (UIImage *)contactImage
{
if (!_contactImage) {
_contactImage = [[UIImage imageNamed:@"placeHolder.png"] retain];
[self asyncDownloadContactImageFromServer];
}
return _contactImage;
}
Then when I finish downloading the image I set it to the
contactImage
property and I post aContactUpdatedImageNotification
.My
ContactsViewController
then get this notification and reload the cell of this contact, this will set the downloaded image to the cell's imageView.
The result of this is good async fetching of the images without blocking the UI while the user scroll the table view.
BUT there is something small that bothers me, when the a user scroll the table view and reveal new cells the new cell's image get download as expected but the cell's imageView is not updated with the new downloaded image till the user pick up his finger.
I supposed that I need to do something in another thread to make this effect, but I don't know how?