почему функция viewdidunload не вызывается, когда я нажимаю кнопку "Назад" в навигационном приложении - PullRequest
3 голосов
/ 08 марта 2011

Привет, я хочу выпустить мой fetchedResultsController.

Мне было интересно, почему viewdidunload не вызывается, когда я нажимаю кнопку "Назад" в навигационном приложении.

спасибо за помощь

Ответы [ 4 ]

15 голосов
/ 08 марта 2011

-viewDidUnload гарантированно вызывается только тогда, когда представление очищено из памяти, и инфраструктура UIKit может висеть на нем, чтобы быстро представить представление, если пользователь вернется туда.Чтобы окончательно освободить выбранный контроллер результатов при исчезновении представления, используйте -viewWillDisappear: или -viewDidDisappear:.

1 голос
/ 06 июня 2012

Если вы считаете, что у вас есть утечки из-за того, что viewDidLoad не вызывается, проверьте ваши вызовы controller.view removeFromSuperView и убедитесь, что вы используете removeFromParentViewController.Вместо того, чтобы просто удалить представление из суперпредставления, удалите ваш viewController из его parentController.

0 голосов
/ 27 июля 2012

Я вижу, что в моем случае происходит что-то странное: dealloc называется, но viewDidUnload нет.

Но я думаю, что могу жить с этим для целей управления памятью, потому что все мои сильные свойства будут освобождены в это время (я использую ARC).

В вашем случае, я думаю, вам следует проверить также, звонит ли dealloc и отпустить там fetchedResultsController.

0 голосов
/ 08 марта 2011

Вы можете назвать это самостоятельно от -dealloc.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...