Представления и управление памятью в ios5 - PullRequest
1 голос
/ 29 января 2012

Мне просто интересно, есть ли утечки памяти в подходе, который у меня сейчас есть:

Я добавляю несколько подпредставлений в представление и определяю каждое из этих подпредставлений как свойство с ключевым словом retain.Когда вызывается функция viewDidUnload, мне нужно установить указатель на эти подпредставления на ноль, или это делается автоматически, так как я использую ARC.Сейчас я ничего не делаю в функции viewDidUnload.

Спасибо за разъяснения!

1 Ответ

2 голосов
/ 30 января 2012

Ничего не делая в viewDidUnload, вы сохраняете эти подпредставления вокруг, но не пропускаете их.

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

Однако вы должны выпустить подпредставления в viewDidUnload, установив для свойств или переменных экземпляра значение nil.Зачем?Система выгружает ваше представление и отправляет вам viewDidUnload, когда памяти мало.Если вы ничего не делаете в viewDidUnload, тогда вы сохраняете эти объекты подвидов, занимая память, когда они вам не нужны.

...