¿Liberar un controller de vista libera todas sus properties?

Tengo un BaseViewController, que es una subclass de UITabBarController, y configuro mis vistas en este controller de vista.

-(void)setUpViews { FirstController *mainViewController = [[FirstController alloc] initAssignment:delegate.currentAssignment withMutableArray:myArray]; UINavigationController *firstNavController = [[UINavigationController alloc] initWithRootViewController:mainViewController]; SecondController *secondViewController = [[SecondController alloc] initWithNibName:@"SecondController" bundle:nil]; UINavigationController *secondNavController = [[UINavigationController alloc] initWithRootViewController:secondViewController]; self.viewControllers = [NSArray arrayWithObjects:firstNavController, secondNavController,nil]; firstNavController.tabBarItem.image = [UIImage imageNamed:@"blablabla.png"]; firstNavController.tabBarItem.title = @"Stream"; secondViewController.tabBarItem.image = [UIImage imageNamed:@"blabla.png"]; secondViewController.tabBarItem.title = @"Favourite"; } 

Ahora tengo otro controller de vista, lo llamo ViewHandlerController , una subclass de BaseViewController . en mi viewDidLoad en este viewHandler , invoco setUpViews que se declara en BaseViewController . en la primera pantalla de mi aplicación, cuando se presiona un button de inicio de session, instancio My ViewHandlerController y presento mi control de fichas con éxito con los controlleres de navigation.

 [[[UIApplication shanetworkingApplication].windows objectAtIndex:0] addSubview:viewControllerHandler.view]; 

Dentro de mi aplicación hay un button para cerrar session. Estoy usando NSNotificationCenter para llamar a mi logoutMethod que se declara en mi primera pantalla. Mi pregunta es, en este logoutMethod, ¿cómo puedo liberar los objects previamente asignados para evitar la presión de la memory ya que el usuario puede iniciar session nuevamente (logIn – logOut -logIn)? ya que estoy usando ARC, ¿está configurando mi ViewController a NIL hará toda la limpieza?

EDITAR: ¿quitar mi ViewControllerHandler de superview y configurarlo a nada ayuda a liberar sus subvistas también?

Aclamaciones

Bueno, responda a su pregunta (no ARC): no, el controller de vista básico no libera sus properties cuando se publica. Pero debe anular sus properties en viewDidUnload y (o) dealloc methods.

Si usa ARC, debe notar que algunas acciones pueden retener su controller y nunca se puede eliminar en algunos casos. Esté atento a los methods, que son object de delegado, pueden no utilizar references débiles

Echa un vistazo a este artículo de Apple sobre gestión de la memory .

Puede usar autorelease en los methods alloc o for (UIView *view in [self.view subviews]) {view release}; en dealloc

introduzca la descripción de la imagen aquí

De hecho, la liberación es opuesta a la operación para retener. Cuando retiene, aumenta en 1 recuento de instancias de object en la memory asignada. Ocurre cuando llamas alloc, copy, new, mutableCopy . Si está utilizando ARC, no puede liberar objects, la administración de memory ya no es su problema.