Когда памяти мало и представления очищаются ОС, я понимаю, что viewDidUnload - подходящее место для очистки объектов и памяти, используемых вашим UIViewController (которые иначе не были бы очищены как функция иерархия представления). Эти данные затем повторно инициализируются при повторном вызове loadView для создания представления. Может ли кто-нибудь привести примеры того, какие вещи можно очистить (и аналогично инициализировать в loadView)?
У меня есть некоторые данные, которые я инициализирую в loadView в настоящее время, что задает основу для моего контроллера представления для запуска сложного сценария анимации, включающего подписи, изображения и т. Д. Я подумал, что было бы целесообразно выпустить и очистить эти данные, если бы мое представление быть удаленным ОС (и были вызваны viewDidUnload), но потом я подумал: почему бы мне просто не инициализировать эти данные в init и очистить их в dealloc вместо многократной инициализации и очистки одних и тех же данных (это не t изменяется в зависимости от того, когда представление загружено или показано). Будет ли это лучшее место для этого?
В основном, я думаю:
- да, я должен просто инициализировать его в init и выпустить в dealloc, потому что он никогда не изменится
- Инициализация объектов в loadView (и последующая очистка в viewDidUnload) является подходящей практикой, когда эти данные будут инициализироваться по-разному в зависимости от того, когда загружается представление (или даже более целесообразно, когда представление появляется в viewWillAppear / viewWillDisappear) или это хороший кандидат для освобождения памяти, потому что он занимает много памяти, которую вы хотели бы видеть свободной, если представление не активно.
Может ли кто-нибудь дать мне некоторые разъяснения по моим вопросам и / или моему мышлению?