иерархии"?
Следует опасаться :
ViewController исчезает с экрана, но это не означает, что впоследствии он будет освобожден. Многие контейнеры хранят viewController в памяти. Например, когда вы углубляетесь в navigation controller, все предыдущие viewController остаются в памяти. Navigation controller освобождает viewController'ы только при переходе вверх по иерархии. Поэтому вы должны иметь в виду, что viewController, который не находится на экране, все равно работает нормально и получает уведомления. Иногда это желательно, иногда нет, поэтому вам нужно помнить об этом при разработке приложения.
Ну ты же когда навигацию делаешь, то контроллеры на стек кладешь. Представь что стек это стопка листов на столе. У тебя есть доступ только к верхнему листу. Когда ты кладешь новый лист бумаги, он добавляется в стек, когда убираешь, он освобождается из памяти. Вот когда лист убираешь, контроллер освобождается
принцип стека ясен, но там же говорится в предложении выше, что : "Например, когда вы углубляетесь в navigation controller, все предыдущие viewController остаются в памяти. Navigation controller освобождает viewController'ы только при переходе вверх по иерархии. " - получается я с экрана А перехожу по навигейшн на экран 2 и соглано написанному " все предыдущие viewController остаются в памяти - а в след предложении говорится противоположное(если ЭТО считать переходом вверх по иерарзии) - вот и непонятно .Подскажите
Короче когда происходит переход на новый экран, все экраны что лежат в стеке, хранятся в памяти со своим стейтом. Когда юзер нажимает кнопочку back. Контроллер освобождается
что значит освобождается - что происходит?
Из памяти удаляется
"Вверх по иерархии" — это к предыдущему, родительскому экрану
Спасибо! т.Е. пока я в стеке навигационного хожу - они все в памяти меня ждут, а как только вышел на уровень выше - раньше, чем Навигационный, то те, что в стеке были - удаляются - деинит? верно?
Пока ты идешь вниз по иерархии, контроллеры удерживаются в памяти, когда поднимаешься выше, происходит деинит.
Обсуждают сегодня