управление памятью iphone (базовое) - PullRequest
2 голосов
/ 19 августа 2010

Очень простой вопрос об управлении памятью iPhone:

Скажем, у меня есть viewController с несколькими подпредставлениями, также управляемыми viewControllers. Когда я удаляю верхний viewController и освобождаю экземпляр - что происходит с его дочерними элементами? Все ли содержащиеся в нем объекты также освобождены?

Когда я запускаю свое приложение на инструментах, у меня не возникает утечек памяти. Но значение для «всех распределений» растет? (Я предполагаю, что это значение является общей памятью, используемой моим приложением?)

Ответы [ 2 ]

1 голос
/ 19 августа 2010

Контроллеры представления освобождают свое представление о dealloc. Взгляды выпускают свои подпредставления на dealloc. Релиз не является сделкой.

Что удерживает другие контроллеры представления? Если ваш контроллер представления есть, то ваш контроллер представления должен освободить их. Обычно это свойство, поэтому вы можете сделать self.subViewController = nil.

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

Отпусти то, что у тебя есть.

1 голос
/ 19 августа 2010

Зависит от того, на что ссылается ваш ребенок UIViewControllers .Если на них ссылаются только в корневом контроллере представления (сохраняется при их создании и освобождении на dealloc ), то они будут освобождены при его освобождении.Если у вас есть другие ссылки на эти контроллеры представления (возможно, от вашего делегата приложения), они будут освобождены только после того, как эти ссылки будут освобождены.

Касание какао Объекты NSO считаются ссылочными, они освобождаются, когда их retainCount уменьшается до нуля. retainCount уменьшается всякий раз, когда release вызывается для объекта.

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