Когда (void)dealloc вызывается в AppDelegate?

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

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

person Old McStopher    schedule 04.03.2011    source источник
comment
возможный дубликат выполняет ли метод Dealloc нормально при выходе из приложение ?   -  person Vladimir    schedule 04.03.2011
comment
Спасибо, @Vladimir, но меня не столько интересует, называется он или нет, сколько знание точного времени его вызова.   -  person Old McStopher    schedule 04.03.2011
comment
просто для ясности - вы забыли [super dealloc] в конце метода)   -  person Eimantas    schedule 15.03.2011
comment
@Eimantas - исправлено. Спасибо.   -  person Old McStopher    schedule 15.03.2011


Ответы (1)


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

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

person Caleb    schedule 05.03.2011