我会试着解释一下我自己,我有ContactsViewController
一个带有联系人列表的表格视图(模型是一个Contact
对象数组),每个单元格都显示一个联系人的图像。
目前我填充单元格的UIImageView
方法是:
1. 我覆盖Contact
图像属性 getter -
- (UIImage *)contactImage
{
if (!_contactImage) {
_contactImage = [[UIImage imageNamed:@"placeHolder.png"] retain];
[self asyncDownloadContactImageFromServer];
}
return _contactImage;
}
然后,当我完成下载图像时,我将其设置为
contactImage
属性并发布ContactUpdatedImageNotification
.然后我
ContactsViewController
收到此通知并重新加载此联系人的单元格,这会将下载的图像设置为单元格的 imageView。
这样做的结果是在用户滚动表格视图时很好地异步获取图像而不会阻塞 UI。
但是有一些小问题困扰着我,当用户滚动表格视图并显示新单元格时,新单元格的图像会按预期下载,但单元格的 imageView 不会更新为新下载的图像,直到用户拿起他的手指。
我想我需要在另一个线程中做一些事情才能产生这种效果,但我不知道怎么做?