代码之家  ›  专栏  ›  技术社区  ›  Martijn Thé

使用从磁盘缓存加载图像的uiimage对象的系统缓存(nscachesddirectory)?

  •  5
  • Martijn Thé  · 技术社区  · 16 年前

    我正在尝试提高 UITableView 它使用单元格,其中包含从Web提取的图像,但存储在 NSCachesDirectory . 单元格有一个自定义的内容视图来绘制内容(图像)。

    当我使用应用程序包中的占位符图像时,使用 [UIImage imageNamed:@"Placeholder.png"] ,滚动性能非常快。

    当我从磁盘缓存加载图像时( nscachesddirectory公司 使用 [UIImage imageWithContentsOfFile:cachePath] ,滚动性能变差。

    根据文件, imageNamed: 缓存图像并 imageWithContentsOfFile: 没有。

    如何使用 UIImage 使用时的系统缓存 包含内容的图像文件: ?

    谢谢!

    3 回复  |  直到 16 年前
        1
  •  8
  •   Martijn Thé    16 年前

    似乎可以使用图像的路径 NSCachesDirectory 作为 [UIImage imageNamed:] 方法。该方法接受相对路径(相对于应用程序包),例如: @"../Library/Caches/SomeCachedImage.png" 作品。

    如果图像被多次使用,uiimage会自动将其缓存到内存中,这可以提高在表视图中多次使用图像时的性能。

        2
  •  3
  •   Stefan Arentz    16 年前

    问题很可能是您在主运行循环中加载和解压缩图像。这将在短时间内阻塞用户界面。如果在单独的线程中进行加载和解压缩,并且仅在 设置 主循环中的图像。(这对于用户界面更改也是必需的,在uiImageView上设置图像为)

    这将需要更多的基础设施。例如,通知方案或键值观察。

        3
  •  0
  •   Mihai Damian    16 年前

    你不能。 imageWithContentsOfFile: 总是从文件中加载图像(尽管很慢)。您可以使用nsarray或nsdictionaries创建自己的内存缓存,这取决于您希望如何进行查找。