Я хотел бы знать действительно ли оба viewDidUnload
и dealloc
всегда называются по очереди в процессе разрушения UIViewController. Действительно ли это возможно это dealloc
мог быть назван на моем контроллере представления без viewDidUnload
будучи названным сначала?
Или в случае, если бы я безопасно выпускаю свойства и сохраненные ссылки в обоих методах, это не была бы проблема, если бы оба метода назвали - но я задавался вопросом, знал ли кто-либо наверняка или мог бы пролить некоторый свет на процесс разрушения.
Обновление 2012 года: удобно отметить это как будто iOS 6 viewDidUnload
был удержан от использования и должен быть заменен ручным разрушением представления при необходимости в didReceiveMemoryWarning
.
Хорошая статья о новом UIView/UIViewContoller и новое поведение и это являются эффектами на joe conway блог
viewDidUnload
не будет вызываться каждый раз, как метод dealloc
. viewDidUnload
вызывается только тогда, когда ваше приложение получает предупреждение о нехватке памяти!
Подумайте, если вы освобождаете свой объект одновременно методами viewDidUnload
и dealloc
. Если оба вызываются каждый раз, то вы освобождаете уже выпущенный объект, что приведет к сбою приложения, не так ли? viewDidUnload
- это место, предоставляемое Apple для очистки вещей при получении предупреждения о нехватке памяти, потому что вы знаете, что в iPhone у нас есть ограничение памяти.