iOS — навигационный контроллер pushViewController пропускает vc, но присутствует не

#ios #swift #memory-leaks #uiviewcontroller #uikit

Вопрос:

Когда я хочу нажать ProfileViewController на навигационный контроллер, после выскакивания ProfileViewController он протекает, и я вижу просочившиеся объекты в MemoryGraph. каждый раз, когда я открываю ProfileViewController новый экземпляр объекта, он создается и не освобождается.

введите описание изображения здесь

Толкающий фрагмент:

 let storyboard = UIStoryboard(name: "Home", bundle: nil)
let vc = storyboard.instantiateViewController(withIdentifier: "ProfileViewController")
self.navigationController?.pushViewController(vc, animated: true)
 

после появления графика сохранения ссылок являются:

введите описание изображения здесь

НО если я present vc, вместо того, чтобы нажимать, утечка памяти исчезнет. поэтому, если была проблема с сохранением сильной ссылки на вк, она не должна была отличаться presenting !

представление фрагмента:

 let storyboard = UIStoryboard(name: "Home", bundle: nil)
let vc = storyboard.instantiateViewController(withIdentifier: "ProfileViewController")
self.present(vc, animated: true)
 

что случилось?

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

1. Возможно, это ошибка профилировщика, но прежде всего я бы попытался найти проблему в вашем коде. Попробуйте прокомментировать весь код ProfileViewController и любой код , который каким — либо образом взаимодействует с ним, если он все еще протекает-тогда, вероятно, не о чем беспокоиться.

2. @Филип хорошо, я попробую и дам тебе знать. проблема заключается в увеличении использования памяти в профилировщике!

3. @Филип, теперь это — класс ProfileViewController { //ничего } — и убедился, что ничто не ссылается на него. даже я прокомментировал метод «childCoordinators» и «store» в своем координаторе, если вы знакомы с координаторами.

4. по-прежнему не освобождается. возможно ли, что профилировщик показывает ошибку. я тоже тестировал на реальном устройстве!

5. Это наверняка может быть ошибка профиля. Если ваш контроллер представления пуст и больше нигде не используется, я думаю, что так оно и есть. Но, может быть, кто-то другой даст вам другой совет, все равно трудно сказать, не видя кода