1
  • 我有一个大小为 3000 * 3000 的 CATextLayer,里面有一个大文本。
  • 文字是说“你好”
  • 我将此 CATextlayer 添加到我的 Superlayer。
  • 我已将 shouldrasterize 设置为 false。

当使用翻译移动超层时,我观察到巨大的内存使用情况,直到应用程序崩溃。

为什么要占用这么多内存?我怎样才能避免这种情况?

我假设,内存中会存储一个位图?但为什么 ?

我的示例是一个极端案例,这并不是我真正高效的应用程序,所以请不要问你为什么要这样做。它只是试图理解发生了什么的极端案例。

4

1 回答 1

2

它消耗太多内存的原因很明显,因为它的尺寸非常大。引用文档-

在 iOS 2.x 中,UIView 对象的最大尺寸为 1024 x 1024 点。在 iOS 3.0 和更高版本中,视图不再受限于这个最大尺寸,但仍然受到它们消耗的内存量的限制。保持视图尺寸尽可能小符合您的最大利益。无论运行的是哪个版本的 iOS,您都应该考虑平铺任何明显大于屏幕尺寸的内容。

于 2016-01-22T10:41:12.203 回答