Ответ 1
Да. После removeFromSuperView
метода removeFromSuperView
это представление также освобождается из памяти.
Если вы хотите подтвердить с документацией Apple, вот ссылка.
Удаляет ли UIView removeFromSuperView метод UIView из памяти? Я просто хочу быть уверенным, что представление больше не использует какую-либо память?
Да. После removeFromSuperView
метода removeFromSuperView
это представление также освобождается из памяти.
Если вы хотите подтвердить с документацией Apple, вот ссылка.
UIView
сохраняет свои дочерние объекты, поэтому, когда вы вызываете метод -removeFromSuperview
, ваш объект вида освобождается.
Итак, если все остальное в порядке с вашим управлением памятью, и ваше представление не сохраняется ничем иным, тогда да - ваше представление должно быть освобождено и удалено из памяти.
Возможным примером, когда просто удалить вид из супервизора может быть недостаточно для освобождения, может быть вид, который имеет выходное соединение и объявленное свойство для него с атрибутом сохранения - в этом случае он сохраняется контроллером, когда он загружается из файла nib и вам может потребоваться освободить этот вид для этого случая:
[iVarView removeFromSuperview];
self.iVarView = nil;
не полностью
это просто стерто с супер зрения
создать вид
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)
Я пытался найти правильный ответ, но пока не нашел