【问题标题】:Cache tableView Cell data缓存tableView Cell数据
【发布时间】:2016-04-15 12:18:26
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: ios swift uitableview uiimageview custom-cell


    【解决方案1】:

    你可以,但是这需要相当多的工作,所以SDWebImage 的好人创建了一个库来下载/缓存/获取/管理您的图像 URL,只需将您的图像获取代码与此类别交换为UIImageview,这个提供UIImageView.sd_ 方法。

    同样使用单元格实现prepareForReuse() 并使用sd_cancel 取消提取

    【讨论】:

      【解决方案2】:

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

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

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

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

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-07-03
        • 2020-06-03
        • 2020-07-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多