Tengo un controlador de vista basado en la navegación y en el controlador de vista he ocultado la barra de navegación superior y uso una UIView personalizada como la barra de navegación.UIViewController & UIview dealloc no se llama
La barra de UIView tiene un botón Atrás y yo uso los métodos de delegado (he declarado un protocolo) para comunicarme con el controlador de vista cuando se presiona el botón Atrás.
Yo uso delegado en mi CustomNavigation Bar id delegado;
y en los principales Vista Controlador cuando se asigno la barra de navegación que establece el delegado
topBar = [[TopNavigationBar alloc] initWithFrame:CGRectMake(0, 0, 480, 40)];
topBar.lblTitle.text = @"Shop";
topBar.delegate = self;
libero este Bar en dealloc ViewControllers.
Ahora, cuando presiono el botón Atrás, uso el método de delegado para llamar a un controlador de vista pop en ViewController principal.
//in Custom Bar
-(void)ButtonPressed {
[delegate TopNavigationBarBackButtonPressed];
}
//In View COntroller
-(void)TopNavigationBarBackButtonPressed {
[self.navigationController popViewControllerAnimated:YES];
}
Ahora el ViewController se poped y el control pasa a la anterior pero el viewController dealloc no se dispara tanto en el ViewController y la UIView
¿Qué estoy haciendo mal?
cualquier gente idea ?? No se llamará a un dealloc si el valor de retención no es 0. Pero no estoy reteniendo viewController en ninguna parte. Hago una [versión de control de vew] después de empujarlo en la pila. Entonces, la única razón por la que puedo pensar es en el protocolo personalizado que he escrito. ¿Tengo que liberarlo? Retengo al delegado en la propiedad. Pero incluso si lo lanzo en el dealloc, no se llamará. ¡¡¡ATACADO !!! –