UINavigationController: когда продвинутое представление получает сообщение Dealloc?

Я ожидал бы, что после того, как я продвигаю контроллер представления, как который я тогда должен выпустить свое владение контроллера представления, я сделал ниже.

CustomViewController *nextViewController = [[CustomViewController alloc] initWithNibName:@"CustomView" bundle:nil];
[[self navigationController] pushViewController:nextViewController animated:YES];
[nextViewController release];

После того, как я делаю это, я предполагаю, что контроллер навигации имеет владение того объекта и выпустит его при выполнении, который тогда назовет dealloc на моем customViewController. Я ожидал бы, что для случая, когда я касаюсь кнопки "Назад" на панели навигации и представлении, больше не отображается. Этого не происходит все же. Я добавил, NSLog ("CustomViewController действительно получал dealloc") в dealloc метод CustomViewController, но он никогда не печатается. Это нормальное поведение?

Контроллер навигации просто делает что-то как хранение того объекта в случае, если этому нужен он в какой-то момент? Это избавится от него, когда память начнет заканчиваться? Я пытался моделировать низкое предупреждение памяти, но ничего не происходит. У меня есть чувство, что ответ на этот вопрос будет то, что я не должен просто волноваться так и выполнять стандартную процедуру для, сохраняют/выпускают/автовыпускают. Это сказало, хотя, кто-либо еще копался в этом немного далее и узнал абсолютный ответ?

13
задан TechZen 5 February 2010 в 21:33
поделиться

1 ответ

«Контроллер навигации просто делает что-то вроде сохранения этого объекта на случай, если он в какой-то момент понадобится?»

Ага. Это именно то, что он делает. Тем не менее, он отправит вам сообщения viewDidLoad и viewDidUnload . И это место, где вы должны выделять и освобождать ресурсы, которые использует ваш контроллер просмотра.

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

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

Мои методы alloc / init для контроллеров просмотра обычно довольно пусты или вообще отсутствуют.

14
ответ дан 2 December 2019 в 00:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: