2012-05-14 22 views
6

No entiendo cuándo debería implementar algo en viewDidUnload versus viewDidDisappear. ¿Cuál es la diferencia entre los dos?viewDidUnload versus viewDidDisappear

Por ejemplo, me gustaría enviar un NSNotificaton cuando el controlador de vista se elimina de la jerarquía de vista. Entre estos dos métodos, ¿importa de dónde publico esa notificación?

http://developer.apple.com/library/ios/#DOCUMENTATION/UIKit/Reference/UIViewController_Class/Reference/Reference.html

+0

¿Por qué esta votación ha sido rechazada? ¿Era la pregunta demasiado vaga? – kevlar

+0

¿La documentación no es lo suficientemente detallada como para explicar la diferencia entre esos dos métodos? –

Respuesta

5

Esto es con referencia a la documentación de Apple: -

viewDidUnload: -

Cuando una condición de memoria baja se produce y no se necesitan puntos de vista del controlador de vista actual, el sistema puede optar por eliminar esas vistas desde memoria. Se llama a este método después de que se haya liberado la vista del controlador de vista y es su oportunidad de realizar cualquier limpieza final. Si su controlador de vista almacena referencias separadas a la vista o sus subvistas, debe usar este método para liberar esas referencias. También puede usar este método para eliminar las referencias a cualquier objeto que haya creado para admitir la vista, pero que ya no sean necesarios ahora que la vista se ha ido.

viewDidDisappear: -

notifica al controlador opinión de que su punto de vista fue retirado de una jerarquía de vista que es everytime vista desaparece o moverse a otro punto de vista.

0

viewDidDisappear se llama cada vez que la vista es que desaparezca o se vaya a otro punto de vista y viewDidUnload se llama cuando la vista del controlador se libera de la memoria. (Obsoleto en iOS 6.0. Las vistas ya no se purgan en condiciones de poca memoria y nunca se llama a este método). see the reference.

+0

Gracias, ahora me doy cuenta de que se llama a viewDidUnload cuando finalmente se destruye viewController, pero se llama a viewDidDisappear cuando realiza la transición a una vista diferente, tal vez más abajo en la jerarquía de vista. Entonces, por ejemplo, si tenemos los controladores de vista A -> B -> C, y quiero saber cuándo B se destruye y el control vuelve a A, entonces debería usar viewDidUnload. Eso es b/c incluso cuando B va a C, viewDidDisappear también se dispara. – kevlar

+4

Esto es incorrecto. 'viewDidUnload' se llama ** solo ** cuando la vista se libera debido a una condición de memoria baja. Si se lanza por otros motivos, no obtendrá el evento 'viewDidUnload'. –

Cuestiones relacionadas