[iphone] Когда следует отпускать объекты в - (void) viewDidUnload, а не в -dealloc?



Answers

Как говорится в документации :

Он вызывается во время условий с низкой памятью, когда диспетчеру просмотра необходимо освободить свой вид и любые объекты, связанные с этим видом, чтобы освободить память.

В той же ситуации dealloc не вызывается. Этот метод доступен только в ОС3 и выше. Работа с той же ситуацией в iPhone OS 2.x была настоящей болью!

Обновление Июль 2015 : Следует отметить, что viewDidUnload устарел в iOS 6, потому что «Views больше не очищаются в условиях низкой памяти и поэтому этот метод никогда не вызывается». Итак, современный совет - не беспокоиться об этом и использовать dealloc .

Question

Что такое -(void)viewDidUnload хорошо?

Могу ли я не просто передать все в -dealloc ? Если представление выгрузилось, не -dealloc бы все равно -dealloc ?




Помните, что viewDidUnload - это метод в контроллере представления, а не в представлении. Метод dealloc будет вызван при выгрузке представления, но метод dealloc диспетчера представления может не вызываться до более позднего времени.

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




Apple устарела viewWillUnload, теперь вы можете использовать didReceiveMemoryWarning или dealloc, чтобы освободить ваши объекты.

В iOS 6 методы viewWillUnload и viewDidUnload для UIViewController теперь устарели. Если вы использовали эти методы для выпуска данных, вместо этого используйте метод didReceiveMemoryWarning. Вы также можете использовать этот метод для публикации ссылок на представление контроллера представления, если он не используется. Вам нужно будет проверить, что представление не находится в окне, прежде чем делать это.




Вы можете освободить любые подзаголовки, которые вы держите, например, UIImageView, который вы сохранили в вашем методе loadView, или еще лучше изображение, которое было в этом UIImageView.






Links