缓存tableView单元格数据

时间:2016-04-15 12:18:27

标签: ios swift uitableview uiimageview custom-cell

在我的应用程序中,我正在使用URL下载一些图像并将它们放在cell.imageView[indexPath.row]中(它是一个带有imageView的自定义单元格)。 我一次可以看到两个单元格,我注意到了方法

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> CustomCell {
}

每次显示单元格时都会调用它。所以我的应用程序继续从服务器下载图像,应用程序结果非常慢。

我想知道是否可以缓存我已经看过的单元格的数据,所以如果我在tableView中向上滚动,我不需要重新下载图像!代码说话只有当我向下滚动表格而不是我已经看过的单元格时,我想调用上面写的func

2 个答案:

答案 0 :(得分:1)

你可以,但它需要相当多的工作,所以SDWebImage的好人使一个库下载/缓存/获取/管理您的图像URL只需交换您的图像获取此类别的代码{{1 }},这给出了UIImageview方法。

同时使用单元格实现UIImageView.sd_并取消prepareForReuse()

的抓取

答案 1 :(得分:1)

不要重新发明轮子!
看一下NSCache,它的工作方式就像一个可变的字典,但它是安全的。

  

NSCache对象在几个方面与其他可变集合不同:

     

NSCache类包含各种自动删除策略   确保它不会占用太多的系统内存。该   如果需要内存,系统会自动执行这些策略   其他应用。调用时,这些策略会删除一些项目   从缓存中,最小化其内存占用。

     

您可以从缓存中添加,删除和查询缓存中的项目   线程,而不必自己锁定缓存。

     

与NSMutableDictionary对象不同,缓存不会复制密钥   放入它的对象。

     

这些功能对于NSCache类是必需的,因为缓存可能   决定在幕后异步自动变异   如果它被调用以释放内存。

您可以使用网址将图片作为值来修改图像 Documentation
NSHipster发帖。

相关问题