Iphone - освободить вид и больше нет свободной памяти - PullRequest
0 голосов
/ 10 августа 2009
-(id)viewWillDisappear:(BOOL)animated
{
report_memory_str(@"BEFORE RELEASE viewWillDisappear");
self.view = nil;
report_memory_str(@"AFTER RELEASE viewWillDisappear");
}

Когда мой вид исчезает, я пытаюсь освободить текущий вид, прежде чем нажать на другой контроллер, я не получаю больше свободной памяти, почему? Как получить больше свободной памяти?

2009-08-10 09:51:31.263 App[4622:207] BEFORE RELEASE viewWillDisappear -- Memory in use (in bytes): 7880704
2009-08-10 09:51:31.280 App[4622:207] AFTER RELEASE viewWillDisappear -- Memory in use (in bytes): 7884800

Ответы [ 2 ]

0 голосов
/ 25 июня 2010

только потому, что вы вызываете release, не означает, что объект был освобожден. Если счет удержания равен 0, он помечается для освобождения. Возможно, поставьте точку останова на вашем значении объекта, который вы пытаетесь освободить, и посмотрите, вызывается ли он до или после проверки памяти.

0 голосов
/ 10 августа 2009

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

Вы можете попробовать

  • Проверка используемой памяти через несколько секунд.
  • Запустите с помощью инструмента производительности Leaks, чтобы увидеть, освобожден объект или нет.
  • Убедитесь, что вы на самом деле освободили представление в методе доступа.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...