Tal vez esta es una mala práctica, pero de las documentaciones que he leído recibí el consejo de inicializar objetos en algunos casos dentro del método viewDidLoad y nada en viewDidUnload.iOS6 viewDidUnload Obsoleto
Por ejemplo, si tiene algo así como la adición de un Observador
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(filterready:)
name:@"filterReady"
object:nil];
Ahora no tengo un método para eliminar el observador, sin embargo, el viewDidLoad convierte llamado cada vez que se muestra la vista que se traduce en tener múltiples los observadores se ejecutan después de un tiempo y el selector se llama varias veces.
Puedo solucionar esto moviendo algunos limpiadores al método viewDidDisappear, pero ahora tengo algunas dudas si estoy haciendo lo correcto.
En mi muestra que tiene varios controladores de navegación que están controlando sus subnavigations, pero el dealloc nunca es llamado por ellos, a pesar de que no se hace referencia
Probablemente sea la respuesta correcta. Aún así es extraño, que hayan eliminado este mensaje. Aprendí usando el SDK siguiendo las diapositivas de Paul Hegarty, y por supuesto todavía están para iOS5. Voy a verificar sus diapositivas actualizadas este año, tal vez él está dando una buena pista sobre esto. – Hons
@Hons no es nada extraño: 'viewDidUnload' fue, explícitamente según la documentación, invocado solo si su vista está descargada debido a una advertencia de memoria. Si agrega un observador dentro de 'viewDidLoad' y lo elimina solo en' viewDidUnload', la mayor parte del tiempo será desasignado sin eliminarlo. Eso dejará un puntero colgando en el centro de notificaciones que casi con certeza provocará un bloqueo más adelante. – Tommy
¿Cómo verifica si su vista está en la ventana? – zakdances