Aclaración como seguimiento a:Seguimiento viewDidUnload vs dealloc pregunta
What exactly must I do in viewDidUnload? When should I release objects in -(void)viewDidUnload rather than in -dealloc?
Así que digamos que hay un error de memoria baja, y la vista está oculto, y viewDidUnload se llama. Hacemos el lanzamiento y nada de baile. Más tarde, no se necesita toda la pila de vistas, por lo que se llama a dealloc. Como ya tengo el lanzamiento y nada en ViewDidUnload, no lo tengo en dealloc. Perfecto.
Pero si no hay ningún error de memoria, viewDidUnload nunca se llama. se llama a dealloc y como no tengo el lanzamiento y nada, hay una pérdida de memoria.
En otras palabras, ¿se llamará a dealloc sin que viewDidUnload se llame primero?
Y el seguimiento práctico de esto es, si aloco y configuro algo en viewDidLoad, y lo libero y coloco en nil en viewDidUnload, lo dejo fuera de dealloc, o hago un cheque nulo defensivo en dealloc y release/nil it si no es nulo?
Usted sabe que puede enviar ningún mensaje de liberación sin problema, ¿no? nil simplemente ignora todos los mensajes que se le envían y devuelve nulo como valor sin ningún error. No es necesario realizar comprobaciones defensivas para nada como con NULL –