iOS popViewController не освобождает память и не вызывается dealloc

У меня есть некоторые проблемы с управлением памятью под ARC. Когда я запускаю popViewController в своем приложении, ни один из них не освобождает память, и иногда не вызывается dealloc для viewcontroller. Даже при вызове dealloc память все еще не освобождается. Поэтому я спрашиваю, что займет память, даже если вызывается метод dealloc viewController? И что заставит не вызывать dealloc? Мало ли возможно анимация, делегат? Что-нибудь еще?

2 ответа

Если dealloc не вызывается, некоторый объект имеет сильную ссылку на контроллер представления. Вы должны проверить свой код и найти надежные циклы ссылок.

Не ожидайте, что ваша память уменьшится на величину, увеличенную при нажатии на представление. iOS кэширует в памяти множество вещей для повышения производительности, таких как изображения, строковые литералы и т. д. Просто убедитесь, что вы не держитесь за объекты дольше, чем они вам нужны.

Xcode 9 предоставляет отличный инструмент для поиска подобных проблем. Он называется: " Граф отладочной памяти". Используя его, вы можете найти свой просочившийся объект по типу класса и четко увидеть, кто на него ссылается, выпуская его оттуда, решает вашу проблему.

Смотрите больше информации о том, как его использовать

Другие вопросы по тегам