Я знаю, что dealloc вызывается, когда количество сохраняемых объектов достигает нуля, и что iVars должен быть освобожден в нем, но мне интересно, подходит ли это также подходящее место для удаления временных файлов или закрытия соединений с базой данных.
В частности, у меня есть подкласс UIViewController, который создает соединение с базой данных в -viewDidLoad, и через взаимодействие с пользователем можно создавать временные файлы.Я хотел бы закрыть соединение с БД и удалить временные файлы (если они существуют), когда вышеупомянутый контроллер извлекается из стека навигации.Должен ли я сделать это в dealloc?
Моей первой мыслью было очистить эту БД и файл в -viewDidUnload, но теперь я знаю, что этот метод вызывается только тогда, когда ОС выдает предупреждение о памяти.Другая мысль заключалась в том, чтобы поместить его в -viewDidDisappear: анимированный, но проблема с этим подходом заключается в том, что другое представление может идти поверх того, которое контролируется моим контроллером представления.В этом сценарии я не хочу закрывать соединение с БД или очищать временные файлы.
Если dealloc не является подходящим местом (это мое интуитивное чувство), где должен выполняться этот тип очистки?Я бы не хотел заставить родителя моего контроллера представления вызывать метод в ответ на то, что его дочерний элемент был удален из стека навигации.