2016-04-15 116 views
0

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

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

这就是所谓的每一个细胞,将显示时间。所以我的应用程序继续从服务器下载图像,而且应用程序结果非常缓慢。

我想知道是否可以缓存我已经看到的单元格的数据,所以如果我在tableView中向上滚动,我不需要重新下载图像!代码说话我想打电话给func只有当我向下滚动表格而不是我已经看到的细胞。

回答

1

你可以,但它需要工作的公平一点让好人在SDWebImage使库下载/缓存/读取/管理您的图片网址,只要将您的图像获取的代码与此类别UIImageview,这给UIImageView.sd_方法。

与细胞落实 prepareForReuse()并取消

还与sd_cancel

1

抓取不要重新发明轮子!
看看NSCache,它像一个可变的字典,但它线程安全。

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

的NSCache类整合各种自动删除策略,这 确保它不使用太多系统内存。如果内存需要 其他应用程序, 系统会自动执行这些策略。在调用时,这些策略会从缓存中删除一些项目 ,从而最大限度地减少内存占用量。

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

与NSMutableDictionary对象不同,缓存不会复制放入其中的对象 对象。

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

您可以使用URL和它们作为值来键入图像。
Documentation
NSHipster后。

相关问题