【问题标题】:Reading UIImage data while scrolling, pros and cons滚动时读取 UIImage 数据,利弊
【发布时间】:2012-01-27 14:46:53
【问题描述】:


我正在为使用NSFileManager保存在设备上的一些图像做某种滚动,

每次用户滚动到特定单元格时,我都会读取图像数据并加载它,滚动有点慢和不稳定,

目前要从我使用[NSFileManager contentsAtPath: myFile] 然后[UIImage imageWithData: imageData] 的磁盘读取图像。

我想知道是否有更简单、更有效的方法来做到这一点, 我想只是将图像预加载到内存中,但是这些图像每个都是 700x700 像素,我担心它会导致内存使用过多,

无论如何,我还在其他一些线程上看到 JPG Representations 似乎比 PNG 占用更多的内存,所以在将所有内容更改为 PNG 后,它似乎工作得更好一些,但仍然不够快。

很想听听您的经历:)
Shai。

【问题讨论】:

  • 你是怎么做到的?
  • 我想我最终使用 GCD(Grand Central Dispatch)在单独的线程上加载图像数据,让 UI 在加载数据时在主线程上顺利工作。

标签: ios uitableview caching uiimage nsfilemanager


【解决方案1】:

Apple 有一个lazy image loading example,可以让您开始从本地或网络位置加载图像。

【讨论】:

  • 这些示例似乎只提供了我已经熟悉的远程数据获取技术......或者我错过了什么?感谢您的回答埃里克! :)
  • 传入文件的URL时,不要使用NSURL URLWithString:,而是使用fileURLWithPath:isDirectory:。
  • 谢谢 Eric,明天早上第一件事就去看看 :)
  • 似乎他们是延迟加载,但保存加载到对象数组中的每个图标,这正是我不想做的,因为他们正在处理 88x88 图标,它不是一个问题,但我正在处理 700x700 的图像,所以我必须确保我只加载当前查看的单元格,而不是将其余的单元格保存在内存中。它需要更多的混乱。我会等待更多的答案,如果我晚上没有得到更好的答案,请把你的答案标记为正确。感谢您的帮助:)
  • 我只会使用 Apple 示例代码作为指导,特别是在滚动停止之前未加载图像的部分。不久前我有一个类似的项目,我们使用 Core Data 作为数据源。当我们不需要图像来降低内存时,我们会排除图像。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-06
  • 2011-08-02
  • 1970-01-01
  • 1970-01-01
  • 2010-10-07
相关资源
最近更新 更多