UIView сохраняется

У меня реальные проблемы с отслеживанием того, почему мой UIView не освобождается.

У меня есть UIViewController с несколькими UIViews, все из которых являются сохраняемыми свойствами IBOutlet.

Я обязательно выпущу UIView в методе Dealloc UIViewController. Однако Dealloc моего UIView никогда не вызывается. Я понятия не имею, что еще сохранило UIView.

Все остальные UIView в моем UIViewController в порядке, но только не этот.

Есть ли у кого-нибудь хорошие методы для отслеживания того, что может быть ответственным за это?

С уважением, Рич


person Rich Brooks    schedule 05.10.2010    source источник


Ответы (2)


Я бы начал с того, что зашел в приложение «Инструменты» и выбрал профиль «утечки». Выберите свое приложение и запустите его для обнаружения утечек.

Когда он обнаружит вашу утечку, нажмите на индикатор подробностей рядом с адресом памяти объекта, из которого произошла утечка (ваш UIView). Здесь вы увидите, как ваш UIView выделяется, сохраняется и освобождается, а также какой вызов функции это сделал.

Есть хорошее видео WWDC под названием «Сеанс 311 — расширенный анализ памяти с помощью инструментов», если вы хотите его посмотреть, они подробно изучают его.

person jps    schedule 05.10.2010

Обязательно прочитайте Управление памятью объектов Nib из Руководства по программированию управления памятью Apple. В нем описывается, как правильно объявить IBOutlets, а также когда и как их выпустить в контроллере вашего представления.

Краткая версия: вы должны установить для свойства IBOutlet значение nil в ViewDidUnload.

Если это не поможет, вы можете попробовать запустить инструмент Leaks Instruments и посмотреть, сможет ли он найти, где вы пропускаете свое представление.

person Kris Markel    schedule 05.10.2010