#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], он будет выпущен, если на него нет других сильных указателей