как узнать, вызывается ли dealloc в iphone sdk? - PullRequest
0 голосов
/ 14 декабря 2009

Я использую подклассы UIviewcontroller. На моем главном экране у меня есть 3 кнопки, каждая кнопка будет загружать разные перья. и у каждого нового пера есть одна кнопка возврата, чтобы вернуться к главному виду. когда я нажимаю одну кнопку «Назад» в любом представлении, чтобы перейти к основному представлению, вызов из этого представления не вызывается? Я не понял этого. Может кто-нибудь объяснить, когда будут называться эти представления dealloc?

Ответы [ 2 ]

2 голосов
/ 14 декабря 2009

если метод dealloc не был вызван, это означает, что вы сохранили ваш объект viewController руками. например, в этом случае dealloc не будет вызываться после нажатия кнопки «Назад» для возврата

MyViewController *controller = [[MyViewController alloc] init];
[self.navigationController pushViewController:controller animated:YES];

Вы должны добавить

[controller release];

к этому коду, чтобы быть уверенным, что ваш экземпляр viewController будет освобожден. Если вы абсолютно уверены, что вы отправили равное количество alloc (или любого сообщения, которое увеличивает retainCount объекта) и release сообщений для вашего объекта и метода dealloc, в любом случае вызывать не будет, это будет более сложно. Я надеюсь, что этот ответ поможет. Если вы обнаружите, что ваша ситуация «более сложная», оставьте комментарий, и я постараюсь объяснить более подробно.

0 голосов
/ 10 мая 2010

Я также хотел бы углубиться в понимание деталей управления памятью (ниже уровня поверхности), когда речь заходит о том, как контроллеры включаются и выключаются в стеке. Я построил свой фреймворк из текста «Начало разработки iPhone 3» Марка и Ламарша, но этот текст эффективно повторно использует субконтроллеры, и их методы dealloc никогда не вызываются.

Я заметил, что многократное использование субконтроллера с NIB, содержащим UIWebView, который вызывает URL-адреса веб-инструкций Google ... в конечном итоге приводит к предупреждению памяти, и мои данные теряются. Это включает в себя повторное «повторное использование» субконтроллера.

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

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