Выбирание цвета фона UIView, увеличивающего использование памяти

Несколько вещей мне нравится:

- при создании интерфейса, подобного

 public interface SomeObject<T> where T : SomeObject<T>, new()

Вы вызываете что-либо, что наследовалось этому интерфейсу для содержания конструктора без параметров. Это очень полезно для нескольких вещей, на которые я натыкался.

- Используя анонимные типы для создания полезного объекта на лету:

var myAwesomeObject = new {Name="Foo", Size=10};

- Наконец, многие Java-разработчики знакомы с синтаксисом как:

public synchronized void MySynchronizedMethod(){}

Однако в C# это не допустимый синтаксис. Обходное решение является атрибутом метода:

 [MethodImpl(MethodImplOptions.Synchronized)]
 public void MySynchronizedMethod(){}
5
задан Michael Gaylord 22 July 2009 в 10:36
поделиться

1 ответ

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

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

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

12
ответ дан 13 December 2019 в 05:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: