ViewController не освобождается из памяти - PullRequest
0 голосов
/ 29 мая 2018

У меня есть эта иерархия представлений

  • RouterDashboardViewController: RootViewController

  • RootViewController: UIViewController

В настоящее время экземпляр RouterDashboardViewController находится в стеке навигации.Когда я сбрасываю rootViewController из NavigationController, RouerDashboardInstance все еще существует в памяти, потому что я могу проверить, что мой метод deinit{} не вызывается. Ниже приведены следы стека в инструментах, но я не могу определить причину, по которой мой экземпляр RouterDashboard не был освобожден.Я уверен, что будут сохраняться циклы, которые сохраняют экземпляр RouterDashboard еще живым.Еще одна вещь, я не понимаю эти следы стека, потому что метод ViewDidLoad () вызывается несколько раз. Stack Traces of Instruments

1 Ответ

0 голосов
/ 29 мая 2018

Что-то имеет сильную ссылку на RouterDashboardViewController.Несколько вещей, которые нужно проверить…

  • Вы присваиваете его переменной?

    • Возможно, вам потребуется объявить его как weak var …
  • Является ли он делегатом другого класса?

    • Убедитесь, что свойства делегата также weak var s
  • Используются ли какие-либо замыкания, которые ссылаются на него self?

    • Добавить список захвата в список параметров вашего закрытия ([unowned self] или [weak self])
...