Если бы у меня было три ViewController с именами VC1, VC2, VC3. И в каждом ViewController много ImageViews.
Если я перемещаюсь по этим ViewController'ам с помощью метода pushViewController:
VC1 -> VC2 -> VC3
Так будет ли освобождена память изображения, выделенная в VC1? Если нет, нужно ли нам освобождать и загружать изображение в VC1 при навигации для экономии памяти?
Я не проверял это. @rmaddy
Вы должны сделать это, а затем обновить свой вопрос с соответствующими деталями.





Если вы используете функцию navigationController?.pushViewController(), все ваши контроллеры представления сохраняются с помощью navigationController. У него есть свойство viewControllers, где вы можете найти все контроллеры представления. Таким образом, вы должны сделать управление памятью самостоятельно. Вы можете удалить изображения из представлений изображений в функции viewWillDisappear() вашего контроллера представления и снова назначить их в функции viewWillAppear.
Используйте инструменты, чтобы определить, что у вас действительно проблемы с памятью. Если это так, то да, вы можете попробовать намеренно установить изображения на nil, когда вы уходите от контроллера представления. Но сначала вы должны спросить себя Зачем у вас проблемы с памятью. Распространенной ошибкой является использование больших изображений для отображения в маленьком UIImageView; никогда не делай этого. Всегда изменяйте размер изображений, чтобы они были не больше, чем необходимо для отображения. Если вы это сделаете, маловероятно, что вы столкнетесь с нехваткой памяти.
Каковы были результаты вашего тестирования?