2012-01-10 3 views
0

Я пытался исправить утечку памяти в своем приложении и наткнулся на очень интересную вещь. Теперь я не уверен, есть ли ошибка, которую я сделал где-то или просто неправильно использовал эту технологию, поэтому я попытаюсь понять все с вашей помощью. Вот что происходит:UIViewController не выпускает свои представления

  • я создать пользовательский UIViewController, который загружает его вид с кончиком пера файла
  • освобождает контроллер
  • метод dealloc контроллера вызывается, когда я выпустить настраиваемое представление, что я специально добавляемый к иерархию представлений как выход (я сделал из него сохраняемое свойство). Он имеет метод dealloc с вызовом nslog.
  • основной вид в файле кончика пера (подключенного к выходу зрения контроллера) также подкласс UIView, который также имеет вызов NSLog в dealloc

Проблема в том, - несмотря на то, dealloc в UIViewController является вызывается, ни главный вид, ни ребенок (тот, у которого есть выход) освобождается (их NSLogs не срабатывает).

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

Спасибо за чтение

+0

Вы используете ARC? –

+0

У вас есть ваш основной вид, прикрепленный в IB, к сохраняющему свойству контроллера вашего вида, который вы не выпускаете? Может быть? – mattjgalloway

+0

Думаю, вам нужно разместить какой-то код, так как трудно точно понять, что вы сделали. Но это определенно звучит так, будто вы просачиваете объекты. – drekka

ответ

0

Проблемы с поздней ночью отладкой является то, что вы не считаете, даже самыми простыми углами. Поскольку мне нравится знать, как все работает, и все с нуля, я создал свою собственную систему для переключения контроллеров представлений. Проблема заключалась в том, что, несмотря на то, что я использовал для освобождения диспетчера представлений, когда это было необходимо, я забыл удалить его из супервизора, тем самым сохраняя слишком много. Теперь есть утечка где-то в другом месте, но я уверен, что сама ее разрешу. Спасибо за ваши комментарии.

Смежные вопросы