1

我已经创建了一个 CALayer 实例,[CALayer layer]并将其框架设置为屏幕框架(例如 768 x 1024 点)。我没有设置这一层的内容。该层会因为更大的尺寸而占用额外的内存,还是因为没有可绘制的内容而使内存消耗保持不变?

4

3 回答 3

3

CALayer 基本上只是一些属性和方法。所以 CALayer 本身(几乎)不消耗内存。如果您将图像分配给内容属性,那么这将消耗图像以解压缩(CGImage)形式使用的内存量。

(Afaik CALayer 仅存储对实际图像的引用,因此准确地说 CALayer 本身仍然几乎没有内存使用)

要在运行时检查应用程序的内存使用情况,请使用(非常酷的)Profiling-Tool:

  1. 构建分析
  2. 在运行下,选择配置文件
  3. 选择“内存使用情况”(或类似的,我现在不坐在我的 MAC 前)
  4. 点击左上角的红色“记录”按钮

请享用

于 2012-11-14T13:35:32.720 回答
1

我只是通过分配大量的空来测量它CALayer,看起来每个都需要大约 340 字节的内存。分配一些可笑的大帧并不会改变它。

然而,图层可能会消耗大量内存,这不仅是因为图像内容,而且似乎还因为内部像素缓存。我还没有尝试过这个,但可以肯定的是,一旦它们开始在屏幕上绘制,即使是形状或文本层也不会那么小。

于 2019-06-09T17:08:01.503 回答
0

如果需要,您可以在创建图层之前和之后检查可用内存。如果你想这样做,请检查:

确定 iOS 设备上的可用 RAM 量

于 2012-11-05T22:53:47.073 回答