los*_*sit 33 iphone cocoa-touch lazy-loading image uitableview
我的UITableView中有大约50个自定义单元格.我想在单元格中显示图像和标签,我从URL中获取图像.
我想做一个懒惰的图像加载,以便在加载图像时UI不会冻结.我尝试在单独的线程中获取图像,但每次单元格再次可见时我必须加载每个图像(否则重复使用单元格会显示旧图像)
Facebook等应用仅为当前可见的单元格加载图像,一旦加载图像,它们就不会再次加载.有人可以告诉我如何复制此行为.
谢谢.
编辑
尝试在NSMutableDictionary对象中缓存图像会在用户快速滚动时产生问题.我只在滚动完全停止并清除内存警告缓存时才获取图像.但应用程序总是会收到内存警告(由于缓存图像的大小)并在重新加载之前清除缓存.如果滚动非常快,它会崩溃.
欢迎任何其他建议
Bra*_*son 19
在后台线程上加载图像仍然是一个好主意.如果您不想每次都重新加载它们,我建议设置一个NSMutableDictionary并将图像存储在那里.您可以使用某些唯一标识符(如行ID或图像名称)作为每个图像的键.
加载单元格时,您将向NSMutableDictionary发送一个objectForKey:消息,以检索该特定单元格的图像(基于您的唯一键).如果它返回nil,则表示缓存中缺少图像,您需要使用背景图像加载线程来检索它.否则,您将返回要显示的表格单元格的相应图像.在内存警告上,您可以清除此图像缓存而不会产生任何不利影响(除了强制它们按需重新加载).