Я пытался исправить утечку памяти в своем приложении и наткнулся на очень интересную вещь. Теперь я не уверен, есть ли ошибка, которую я сделал где-то или просто неправильно использовал эту технологию, поэтому я попытаюсь понять все с вашей помощью. Вот что происходит:UIViewController не выпускает свои представления
- я создать пользовательский UIViewController, который загружает его вид с кончиком пера файла
- освобождает контроллер
- метод dealloc контроллера вызывается, когда я выпустить настраиваемое представление, что я специально добавляемый к иерархию представлений как выход (я сделал из него сохраняемое свойство). Он имеет метод dealloc с вызовом nslog.
- основной вид в файле кончика пера (подключенного к выходу зрения контроллера) также подкласс UIView, который также имеет вызов NSLog в dealloc
Проблема в том, - несмотря на то, dealloc в UIViewController является вызывается, ни главный вид, ни ребенок (тот, у которого есть выход) освобождается (их NSLogs не срабатывает).
Нормально ли это происходит? Может быть, iOS сразу не выпускает взгляды? Или мне нужно искать ошибки в коде? Если это так - каковы могут быть наиболее вероятные причины?
Спасибо за чтение
Вы используете ARC? –
У вас есть ваш основной вид, прикрепленный в IB, к сохраняющему свойству контроллера вашего вида, который вы не выпускаете? Может быть? – mattjgalloway
Думаю, вам нужно разместить какой-то код, так как трудно точно понять, что вы сделали. Но это определенно звучит так, будто вы просачиваете объекты. – drekka