3

我想知道iOS在显示图像时如何利用内存...

例如:我有一个 2000w、2000h 的图像,但是在这种特殊情况下,iphone、ipod 有一个 460x920 的矩形(只是一个例子)......如果图像对于 iOS 设备的矩形是可见的,我确定正在使用内存,但是矩形中当前未绘制的图像的其余部分会发生什么?内存被消耗了吗?还是 iOS 足够聪明,不会仅将内存用于绘制部分?或者这被认为是内存泄漏?

我想知道这一点,因为在某些游戏中,您需要更长的场景和大图像,在这些场景中使用视差节点或任何类似的东西会有所帮助。但我开始怀疑这会如何影响我的记忆。

提前感谢您的回答。

4

2 回答 2

8

在 iPhone 4 上,您有 512MB 的 RAM。它在 CPU 和 GPU 之间共享,这意味着 Video RAM 会消耗其中的一部分。

如果您谈论的是UIImage分配的 2000 x 2000 像素。即使它不在屏幕上,它也会消耗 RAM。准确地说,它消耗2000*2000*4,大约16MB。这是由 Objective-c 运行时管理的。这是一个相当大的数额。据我所知,UIImage4系设备上a的最大尺寸是2048x2048,3系上是1024x1024。

查看矩形或您正在谈论的屏幕是视频 RAM 的一部分。典型的显示过程包括在视频 RAM 中合成图像,以便图形硬件可以显示它。

因此,您在这 512MB 的 RAM 中有两个图像副本。一个您可以通过代码 (RAM) 加载和修改,另一个较小的用于显示 (VRAM)。尽管在 VRAM 中,仅使用屏幕的大小。

不,这不是内存泄漏。

于 2012-04-08T05:52:37.710 回答
2

是的,整个图像都加载到内存中。您可以使用诸如 CATiledLayer 之类的东西来更好地管理图像。

于 2012-04-08T14:24:00.760 回答