Удаляет ли UIViewFromSuperView метод UIView из памяти

Удаляет ли UIView removeFromSuperView метод UIView из памяти? Я просто хочу быть уверенным, что представление больше не использует какую-либо память?

Ответы

Ответ 1

Да. После removeFromSuperView метода removeFromSuperView это представление также освобождается из памяти.

Если вы хотите подтвердить с документацией Apple, вот ссылка.

Ответ 2

UIView сохраняет свои дочерние объекты, поэтому, когда вы вызываете метод -removeFromSuperview, ваш объект вида освобождается.

Итак, если все остальное в порядке с вашим управлением памятью, и ваше представление не сохраняется ничем иным, тогда да - ваше представление должно быть освобождено и удалено из памяти.

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

[iVarView removeFromSuperview];
self.iVarView = nil;

Ответ 3

не полностью

это просто стерто с супер зрения

создать вид

let v = UIView.init()
v.frame = CGRect(x: 10, y: 40, width: 100, height: 100)
v.backgroundColor = .blue
view.addSubview(self.v)

убрать из супер просмотра

v.removeFromSuperview()

он просто удалит элемент пользовательского интерфейса v из вида, но значения frame, backgroundColor и других параметров не будут удалены из памяти. После удаления элемента попробуйте распечатать его размер кадра

print("frame: \(v.frame)   bkcolor: \(v.backgroundColor)")

он все еще печатает значения

выход

frame: (10.0, 40.0, 100.0, 100.0)  bkcolor: Optional(UIExtendedSRGBColorSpace 0 0 1 1)

Я пытался найти правильный ответ, но пока не нашел