在我的应用程序中,我正在使用URL下载一些图像并将它们放在cell.imageView[indexPath.row]
中(它是一个带有imageView的自定义单元格)。
我一次可以看到两个单元格,我注意到了方法
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> CustomCell {
}
每次显示单元格时都会调用它。所以我的应用程序继续从服务器下载图像,应用程序结果非常慢。
我想知道是否可以缓存我已经看过的单元格的数据,所以如果我在tableView中向上滚动,我不需要重新下载图像!代码说话只有当我向下滚动表格而不是我已经看过的单元格时,我想调用上面写的func
。
答案 0 :(得分:1)
你可以,但它需要相当多的工作,所以SDWebImage的好人使一个库下载/缓存/获取/管理您的图像URL只需交换您的图像获取此类别的代码{{1 }},这给出了UIImageview
方法。
同时使用单元格实现UIImageView.sd_
并取消prepareForReuse()
答案 1 :(得分:1)
不要重新发明轮子!
看一下NSCache,它的工作方式就像一个可变的字典,但它是安全的。
NSCache对象在几个方面与其他可变集合不同:
NSCache类包含各种自动删除策略 确保它不会占用太多的系统内存。该 如果需要内存,系统会自动执行这些策略 其他应用。调用时,这些策略会删除一些项目 从缓存中,最小化其内存占用。
您可以从缓存中添加,删除和查询缓存中的项目 线程,而不必自己锁定缓存。
与NSMutableDictionary对象不同,缓存不会复制密钥 放入它的对象。
这些功能对于NSCache类是必需的,因为缓存可能 决定在幕后异步自动变异 如果它被调用以释放内存。
您可以使用网址将图片作为值来修改图像
Documentation。
NSHipster发帖。