2016-01-22 5 views
1
  • У меня есть CATextLayer размером 3000 * 3000 с большим текстом в нем.
  • Текст скажет: «Привет»
  • Я добавляю этот CATextlayer в свой Superlayer.
  • Я установил wasrasterize в false.

При перемещении сверхслоя с переводом, я наблюдаю огромное использование памяти, пока приложение не сработает.Почему CATextlayer использует столько памяти

Почему это занимает столько памяти? Как я могу избежать этого?

Я предполагаю, что в памяти будет растровое изображение? Но почему ?

Мой пример - это крайний случай, который на самом деле не является моим продуктивным приложением, поэтому, пожалуйста, не спрашивайте, почему вы это делаете. Его единственный крайний случай для попытки понять, что происходит.

ответ

2

Причина, по которой он потребляет слишком много памяти, очевиден, поскольку его размерность довольно велика. Процитировать documentation -

В iOS 2.x максимальный размер объекта UIView составляет 1024 x 1024 балла. В iOS 3.0 и более поздних версиях эти ограничения больше не ограничиваются этим размером , но по-прежнему ограничены объемом памяти, которую они потребляют. Это в ваших интересах, чтобы иметь размеры как можно меньшего размера. Независимо от того, какая версия iOS работает, вы должны рассмотреть размер любого контента, который значительно превышает размеры экрана .

+0

Но я стараюсь понять, почему он потребляет столько памяти. Конечно, я должен уменьшить размер, чтобы соответствовать. Это крайний образец, который я описал. Мне нравится понимать, в чем причина. Это растровое изображение, хранящееся в памяти? Или что ? И действительно ли это так, что, когда я рисую простой текст, он создает растровое изображение в конце. Я предполагаю, что это будет missdesign от Apple, если CALayer, который имеет много преимуществ, как результат в растровом виде. –

+0

И вы делаете анимацию перехода, и помните, что во время анимации присутствует слой презентации, и все это вызовет огромный всплеск памяти. – Shripada

+0

Нет. Я не делаю анимации. Я просто переводил UIView с его каллами в нем. –