UIImage的imageNamed是否仍会导致iOS4上的大图像内存问题?

时间:2010-12-08 16:40:58

标签: iphone uiimage

我发现一些内存管理文章提到UIImage's imageNamed会导致内存中有大量图像时出现问题。

http://akosma.com/2009/01/28/10-iphone-memory-management-tips/ http://www.alexcurylo.com/blog/2009/01/13/imagenamed-is-evil/

这两个都是为OS版本< = 3.0。

编写的

有人知道这些在iOS 4中是否仍然存在问题?

3 个答案:

答案 0 :(得分:3)

不再是问题,请参阅heremaybe here

答案 1 :(得分:2)

如果您查看此链接:Dispelling the UIImage imageNamed: FUD您会看到大图像和图像命名确实存在两个问题:

  1. 在iOS 3.0之前是imageNamed的缓存例程中的一个错误:这样即使收到mem警告也不会释放缓存。这是一个非常重要的问题,并且是我个人的大量内存崩溃的根源,因为在使用imageNamed之后你无法获得内存:加载它。这不再是一个问题,因为这似乎已在3.0中修复。
  2. imageNamed:在其缓存中保留未压缩的图像数据本身。对于非常大的(就屏幕尺寸而言 - 宽x高)图像而言,这些数据可能非常大。 width * height * 4是我通常看到的未压缩尺寸。如果您使用相当大的图像,这对您来说仍然可能是一个问题 - 如果您不需要经常重绘它们,尤其要避免。
  3. 所以回顾一下:1不再是问题,2可能是。

答案 2 :(得分:0)

确实如此。 结合UIPageViewController,它确实如此。 试图构建一个显示动物声音和卡通keyFrame动画的儿童应用程序 所有单独的动物细节都在他们自己的UIViewController中 所有视图都显示在UIPageViewController中(转换:滚动)。 不知道imageNamed bug和近一个月,认为这是由UIPageViewController引起的问题。 ARC从未发布过记忆。 ASA我切换到imageWithContentsOfFile而不是imageNamed,所有问题都解决了。 UIPageViewController在真实中是无辜的。它现在很顺利。没有未释放的记忆问题。