cachingtableView单元格数据

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

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

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

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

你可以,但是它需要一点点的工作,所以在SDWebImage漂亮的人做一个图书馆来下载/caching/获取/pipe理你的图片url只是交换你的图像获取代码与UIImageview这个类别,这给UIImageView.sd_方法。

另外细胞实现prepareForReuse()并取消与sd_cancel的提取

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

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

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

您可以从不同的线程中添加,删除和查询caching中的项目,而无需自己lockingcaching。

与NSMutableDictionary对象不同,caching不会复制放入其中的关键对象。

这些function对于NSCache类是必需的,因为caching可能决定在后台自动asynchronous变异,如果它被调用来释放内存的话。

您可以使用他们的URL和他们作为一个值键入您的图像。
文档 。
NSHipster职位。