Когда (void) dealloc вызывается в AppDelegate? - PullRequest
2 голосов
/ 04 марта 2011

Я понимаю, что переменные экземпляра выпускаются в dealloc (как показано ниже), но когда именно он вызывается?Все переменные экземпляра освобождаются при закрытии приложения или существует общепринятый способ их освобождения по отдельности, когда они становятся ненужными?

- (void)dealloc {
    [fred release];
    [wilma release];
    [barney release];
    [betty release];
    [super dealloc];
}

1 Ответ

6 голосов
/ 05 марта 2011

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

Я думаю, что этонадежная ставка на то, что делегат приложения будет освобожден, если никакой другой объект, кроме приложения, не сохранил его, и вы дали приложению новый делегат.Помимо этой необычной ситуации, метод -dealloc делегата приложения, вероятно, вообще не вызывается очень часто.Однако это не означает, что вы не должны реализовывать его правильно - это ожидаемое поведение, и все может легко измениться в будущем выпуске iOS.

...