Как оптимизировать память для очень длинного стека навигации UIViewControllers - PullRequest
0 голосов
/ 04 июня 2019

В моем приложении есть несколько сценариев, в которых навигационный стек становится очень длинным из-за количества нажатий UIViewControllers.Я создаю что-то похожее на пользовательский интерфейс файлового обозревателя в моем приложении, и есть вероятность, что в стек навигации будет вставлено множество UIViewControllers.Для очень глубокого стека навигации я сталкиваюсь с предупреждениями в памяти.

В приложении нам нужно только показать текущий UIViewController все предыдущие UIViewConrollers в памяти.Можем ли мы оптимизировать это и добавить какую-то виртуализацию, чтобы улучшить объем памяти?

1 Ответ

0 голосов
/ 04 июня 2019

Насколько я понимаю, у вас есть UIViewController для каждой папки.

Я думаю, что нет проблем, если вы оставите только последние 3 контроллера. И на viewWillApear каждого UIViewController у вас есть проверка старых контроллеров представления и удаление некоторых контроллеров представления

Может быть, что-то подобное в viewWillAppear

if (navigationController?.viewControllers.count)! > 3 {
    navigationController?.viewControllers.removeFirst()
} else if (navigationController?.viewControllers.count)! < 2 {
     if true {
          let olderPage = UIViewController()
          navigationController?.viewControllers.insert(olderPage, at: 0)
     }
}

Конечно, вы можете больше играть с тем, что есть в View Controller, и инициализировать столько, сколько сможете в viewWillApear, и освободить столько, сколько сможете в viewWillDisapear. Имейте в виду, что при загрузке изображений с UIImage(named:) изображение будет кэшироваться, и они не будут освобождать память.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...