2010-11-29 2 views
0

dire que je passe un UIViewController à un UINavigationController comme ceci:Existe-t-il un moyen de forcer un UIView à libérer une sous-vue?

SettingsViewController *settingsRootView = [[SettingsViewController alloc] initWithNibName:@"SettingsViewController" bundle:nil]; 
    SettingsNavigationController *settingsView = [[SettingsNavigationController alloc] initWithRootViewController:settingsRootView]; 
    [settingsRootView release]; 
    [self presentModalViewController:settingsView animated:YES]; 
    [settingsView release]; 

je libère mon retain le UIViewController original, settingsRootView, mais settingsView détient un retain. Quand je rejette settingsView, il devrait se libérer et tous ses enfants, mais pour une raison quelconque, ce n'est pas le cas. Est-il possible de dire à ma vue d'application principale que c'est fait avec settingsView pour forcer ma vue principale à publier settingsView et toutes ses sous-vues?

Répondre

0

Pour forcer vos paramètres à afficher les contrôleurs qu'il gère, appelez settingsView.viewControllers = nil.

Mais cela devrait se faire automatiquement lorsque settingsView est libéré. Placez un point d'arrêt dans la méthode dealloc de settingsView pour vous assurer qu'il est publié. Assurez-vous que dealloc appelle [super dealloc].

+0

J'ai vérifié que dealloc est appelé. Peut-être était-ce la mise en œuvre de ma sous-classe. – Moshe

Questions connexes