Всегда ли вызывается viewDidUnload и dealloc при разрушении UIViewController?

Я хотел бы знать, оба ли viewDidUnload а также dealloc всегда вызываются последовательно в процессе демонтажа UIViewController. Возможно ли, что dealloc может быть вызван на моем контроллере зрения без viewDidUnload был вызван первым?

В любом случае, если я благополучно освобождаю свойства и сохраняю ссылки в обоих методах, не было бы проблем, если бы оба метода были вызваны - но мне было интересно, знает ли кто-нибудь наверняка или сможет пролить свет на демонтаж? процесс.

Обновление 2012: удобно заметить, что как будто iOS 6 viewDidUnload устарела и должна быть заменена на ручную разборку вида, если это требуется в didReceiveMemoryWarning,

Хорошая статья о новом UIView/UIViewContoller и новом поведении и его влиянии на блог Джо Конвея

2 ответа

Решение

viewDidUnload не будет вызываться каждый раз, как dealloc метод. viewDidUnload вызывается только тогда, когда ваше приложение получает предупреждение о нехватке памяти!

Просто подумайте, если вы выпускаете свой объект как в viewDidUnload а также dealloc методы. Если каждый раз вызывается, то вы освобождаете уже освобожденный объект, что приведет к сбою приложения, не так ли? viewDidUnload Apple предоставляет место для очистки вещей при получении предупреждения о нехватке памяти, потому что вы знаете, в iPhone у нас есть ограничение памяти.

Весьма продуманно, что метод viewDidiUnload вызывается только при появлении предупреждения о памяти. Хорошей практикой было бы освободить необходимый объект в этом методе, а также сделать объект нулевым.

Другие вопросы по тегам