Оптимизация работы ViewControllers


#1

Добрый день.
Обращаюсь к вам по такому вопросу:

У меня есть главный экран приложения. Все последующие экраны - это child от главного экрана. Почему так? Потому что дизайнеры хотят прозрачный фон, типо, чтобы за экранами был виден главный экран (примерно как в spriteKit курсе с кнопкой паузы, для тех кто смотрел). Соответственно у меня назрел вопрос по нагрузки самого приложения. Вот при запуске главного экрана, я во viewDidLoad инициализирую 4 экрана к которым буду якобы обращаться. В самих child уже есть делегаты которые передают на главный экран инф, что пользователь нажал. Я по этим событиям делаю

viewController.willMove(toParentViewController: nil)
viewController.removeFromParentViewController()
viewController.view.removeFromSuperview()

и добавляю новый следующий экран. Те один убрал, второй добавил и так д. Так вот, я обратил внимание, что в памяти, все экраны держатся и не уничтожаются потому, что они у меня инициализированы уже в самом главном экране. Вопрос: насколько правильно так делать? В курсе напримере spriteKit автор тоже держал контроллер паузы и так д. в памяти.

Чтобы они уничтожались, надо инициализировать контроллеры не во viewDidLoad главного экрана, а например, при событие нажатие кнопки. Будет выделяться всегда новый контроллер, а старый умирать. Но также вопрос: правильно ли инициализировать контроллеры в action например по нажатию кнопки?


#2

Все childs должны “умирать” при закрытии.