выпуск в viewDidUnload имеет какое-то значение или нет? - PullRequest
2 голосов
/ 17 августа 2011

Я новичок в разработке для iPhone.

Я использую некоторые кнопки и ярлыки в своем приложении.Я выпускаю все эти кнопки и метки в функции dealloc.
Я также выпускаю их в viewDidUnload.

- (void)viewDidUnload
{
[super viewDidUnload];
self.ans1 = nil;
self.ans2 = nil;
self.ans3 = nil;
self.ans4 = nil;
self.button = nil;
self.button2 = nil;
self.button3 = nil;
self.button4 = nil;
}

Я просто хочу знать, что это хорошо для управления памятью или нет никакой разницы дляуправление памятью.
И зачем мы это используем ??

Заранее спасибо .. !!

Ответы [ 3 ]

3 голосов
/ 17 августа 2011

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

В viewDidUnload вы должны освободить те объекты, которые являются частью представления, и все, что может и будет воссоздано в viewDidLoad (потому что viewDidLoad будет вызываться снова, когда контроллеру представления необходимо воссоздать его представление). Это включает в себя все ваши выходы. Вы также должны установить эти переменные в ноль, чтобы избежать их перевыпуска.

Поскольку в dealloc вы должны освободить все объекты, которые сохраняет ваш контроллер представления, включая те, которые вы включили в viewDidUnload.

2 голосов
/ 17 августа 2011

viewDidUnload используется для освобождения всего, что вы могли сделать при создании представления - это включает в себя вещи в viewDidLoad, но также включает в себя и свойства IBOutlet, которые создаются внутри файла xib. все они должны быть освобождены и установлены в ноль в viewDidUnload.

Все остальное должно быть просто освобождено в dealloc.

Идея состоит в том, что если viewDidUnload вызывается для освобождения некоторой памяти, представление может быть заново полностью воссоздано из вашего метода viewDidLoad.

Также смотрите этот вопрос;

управление памятью на iPhone с viewDidUnload

1 голос
/ 17 августа 2011

Это хорошо для управления памятью.Если вы освобождаете объекты, связанные с контроллером View, когда контроллер выгружается, вы эффективно уменьшаете объем памяти вашего приложения.Сохранение объектов, даже если вы их не используете, делает ваше приложение более подверженным предупреждению памяти и возможному завершению.

Следовательно, хорошей практикой является распределение в ViewDidLoad и выпуск в ViewDidUnload.

HTH,

Акшай

...