iOS Swift popViewController не выпущен из памяти?

#swift #memory #memory-leaks

#swift #память #утечки памяти

Вопрос:

у меня возникла проблема с закрытием, UIViewcontroller которое подключено и открыто из UINavigationController, когда я закрываю / повторно открываю B UIViewcontroller память увеличивается каждый раз, когда я ее открываю, но когда я закрываю ее, ничего не произошло, память не отключается.

Я все равно пробовал следующие коды :

 DispatchQueue.main.async {[weak self] in
    guard let strongSelf = self else { return }
    strongSelf.navigationController?.pushViewController(vc, animated: true)
}
  

и

 DispatchQueue.main.async {[unowned self] in
    self.navigationController?.pushViewController(vc, animated: true)
}
  

и

 self.navigationController?.pushViewController(vc, animated: true)
  

у B UIViewctonroller есть только 1 изображение в раскадровке, там нет кода.

любая идея, как освободить закрытый «всплывающий» UIViewController из памяти?

Комментарии:

1. Пожалуйста, предоставьте пример проекта или больше кода, потому что все ваши примеры выполняют одно и то же и сами по себе не могут создавать циклы памяти

2. здесь важно, как вы получили B UIViewController.

Ответ №1:

  • убедитесь, что вы не установили никаких сильных указателей на этот ViewController (например, навигационный контроллер), в противном случае этот контроллер будет сохранен навигационным контроллером
  • Старайтесь избегать использования сильных свойств для IBOutlets.

  • если вы используете self в своем коде, убедитесь, что это необязательный self, используя блоки Swift [weak self], он будет выпущен, если на него нет других сильных указателей