Установка цвета фона Uiview увеличивает использование памяти

StackOverflow https://stackoverflow.com/questions/1164388

Вопрос

Я загружаю ряд Uiviews на UIScrollView и пытаюсь отследить, почему они используют столько памяти. После процесса устранения, используя инструменты, я обнаружил, что настройка цвета фона представлений увеличивает использование памяти в 4 раза.

Если я не устанавливаю цвет фона, использование памяти находится на уровне около 4,5 мг. Как только я установил цвет фона на что -нибудь Redcolor или Clearcolor, использование памяти прыгает до 17 метров.

Вот код:

ThumbnailView *thumbView = [[ThumbnailView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 225.0f, 320.0f)];
thumbView.tag = aCounter;
thumbView.backgroundColor = [UIColor clearColor];

Кто -нибудь знает, что это может вызвать?

Что я действительно хочу, так это прояснить фон. Если это невозможно, есть ли другой способ установить фон uiview, чтобы быть ясным?

Это было полезно?

Решение

Все экземпляры Uiview (и уроки, полученные из него), имеют связанный объект Calayer (доступ к свойству слоя), который обеспечивает визуальный внешний вид Uiview. У Calayer может быть свой собственный растровый карту, он может поделиться растровым картой с другим объектом Calayer (как это делаются), или он не может иметь растрового изображения.

Когда Uiview действует как контейнер для других элементов управления, он не имеет растрового изображения, связанного с его слоем, поэтому он использует очень мало памяти. Как только вы установите его цвет фона, это должно быть создано для того, чтобы сделать что -то, чтобы сделать что -то, что можно сделать. Если подкласс Uiview реализует натяжение, чтобы втянуть некоторую графику в представление, произойдет то же самое.

Поскольку полноэкранное представление потребляет много памяти, когда вы реализуете решение на основе UIScrollView, вы должны загружать только отображаемые представления и две стороны. Не создавайте их заранее.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top