У меня довольно простое приложение, которое я обновляю - и в рамках обновления я реализую управление предупреждениями памяти.
Когда вызывается метод предупреждения о памяти, я освобождаю все неиспользуемые контроллеры представления (а они, в свою очередь, освобождают любой из их объектов). Кажется, все работает нормально, нет утечек и т. Д., Насколько я могу судить.
Что не работает:
При использовании инструмента «распределений» существует много памяти, которая не высвобождается при вызове смоделированного аппаратного предупреждения. Вот что я делаю при тестировании:
1 - запустить приложение - это оригинальный скачок памяти, показанный ниже.
2 - добавить новый контроллер вида - это второй всплеск.
3 - Вернитесь к контроллеру основного вида и смоделируйте предупреждение аппаратной памяти - это (небольшое) падение памяти ближе к концу. Это предупреждение должно полностью освободить дополнительный контроллер вида и связанные с ним объекты.
![enter image description here](https://i.stack.imgur.com/bmqmg.png)
Несмотря на то, что все освобождено, остается много памяти. Насколько я могу судить, это что-то вроде кэшированной анимации и т. Д., Что делает iOS. В реальной ситуации с нехваткой памяти, это должно быть освобождено, и не останавливаться, поскольку это - то, куда большая часть памяти уходит.
Как освободить эту память - или что я делаю не так? Любые указатели будут высоко оценены - спасибо!
-
РЕДАКТИРОВАТЬ: Спасибо за все ответы до сих пор! Хотя, к сожалению, я до сих пор не смог решить проблему. Кроме того, странность памяти возникает только при использовании контроллеров модального представления.
Я заметил, что на самом деле у меня есть метод фоновой загрузки для дополнительного контроллера представления, который вызывается при запуске приложения, чтобы все работало гладко. Это указывает на то, что второй всплеск памяти полностью связан с чем-то другим, чем контроллер представления - может быть, анимация или что-то? В любом случае, проблема все еще остается - для чего используется эта дополнительная память и как ее освободить, когда мне это нужно?
Я мог бы потенциально создать мини-проект, который демонстрировал бы поведение, если бы это помогло. Спасибо:)