Есть ли способ заставить объект освободить память в Какао? - PullRequest
0 голосов
/ 08 июля 2011

Я работаю над приложением для iOS с двумя разными контроллерами представления и тремя разными представлениями.Первый контроллер вида имеет только один вид, который является видом меню.Другой контроллер представления имеет два представления, оба из которых интенсивно отображают контент (видео, изображения, звуки и т. Д.).Проблема состоит в том, что второе представление этого контроллера представления должно полностью освободить ВСЕ его объекты, когда отклонено, и это не так.Существует объект из другого класса (пользовательский видеопроигрыватель), который не освобождается, и это приводит к тому, что приложение работает неправильно.Я знаю, что это не освобождается, потому что некоторые из его объектов все еще живы в памяти, поэтому, прежде чем я перейду весь код (более 1500 строк кода) в поисках объектов, которые МОГУТ быть свободными, когда я хочу, есть ли способзаставить объект освободить его память?как флеш или что-то?

Ответы [ 2 ]

1 голос
/ 08 июля 2011

Память для объекта освобождается немедленно, когда он dealloc -едан.Когда вы release объект и его счетчик достигает нуля, dealloc вызывается автоматически.Если у вас есть объекты, которые все еще находятся в памяти после того, как вы их отпустите, вполне вероятно, что они либо чрезмерно сохранены, либо какой-то другой объект (например, пул автоматического выпуска) все еще сохраняет их.

0 голосов
/ 08 июля 2011

В качестве грубого теста вы можете вызвать dealloc для вашего объекта видеопроигрывателя, который освободит его из памяти.Если какой-то другой объект все еще использует его, ваше приложение потерпит крах, когда этот объект попытается отправить ему сообщение.Когда это происходит, вы можете посмотреть на трассировку стека, чтобы получить больше информации о том, что на нем висит.Приложение «Инструменты» также может вам помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...