1

我目前正在做一个项目,我需要在 UITableView 上显示大图像,这对于很多开发人员来说是非常常见的问题,并且通过他们的线程学习我达到了以下过程:

注意:我指的大图像,它们都有 300x300px(600x600px,视网膜)和大约 200kb,JPEG

  1. 创建一个 NSOperationQueue;
  2. 异步下载图片(每张图片有600x600px,对应@2x图片);
  3. 调整大小并创建非视网膜图像(300x300px 图像);
  4. 解压两张图片;
  5. 将所有图像存储在 NSCache 上;

在所有这些程序完成后,我在主线程上更新我的 UITableView。我正在使用 UITableViewCell 子类来绘制我所有需要的内容(如 Apple 的示例代码所示)。主要问题是我对第 4 步感到困惑(解压缩图像),我的疑问:

注意:我目前将解压缩的图像存储在 NSCache 上。

  • 我应该解压缩图像并将其存储为 UIImage 还是 NSData?
  • 我如何存储解压缩的图像?(NSCache,NSMutableArray ...)
  • 将解压缩的图像传递给我的 UITableViewCell 子类的最佳方法是什么?

注意:我正在使用此处提供的解压缩代码:链接

4

1 回答 1

2
  • 您不能真正将UIImage对象存储到磁盘,但可以将其转为NSData使用UIImagePNGRepresentation
  • 使用 UIImage 会给你开箱即用的缓存,我敢打赌它是你能得到的最有效的
  • 只是把图片放到 UIImageView 中,Apple 花了很多时间在快速渲染图片上。

也就是说,您的图像并不是特别大,尤其是对于视网膜设备,我建议您查看类似AFNetworking库的东西,该库具有针对此问题的完整且经过测试的解决方案。

另外,您可以查找AFImageRequestOperation的代码,它完全符合您的需求:下载、存储、缓存、重用。

于 2013-02-11T05:56:38.013 回答