2010-11-29 42 views
0

说我传递一个UIViewController到一个UINavigationController像这样:有没有办法强制UIView发布子视图?

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

我释放我保留原始的UIViewController,settingsRootView,但settingsView持有保留就可以了。当我解雇settingsView时,它应该释放自己和所有的孩子,但由于某种原因,它不是。有没有办法告诉我的主应用程序视图使用settingsView来强制我的主视图发布settingsView及其所有子视图?

回答

0

要强制您的settingsView释放它正在管理的任何控制器,请调用settingsView.viewControllers = nil。

但是这应该在settingsView发布时自动发生。在你的settingsView的dealloc方法中放置一个断点,以确保它被释放。确保dealloc调用[super dealloc]。

+0

我已验证dealloc正在被调用。也许这是我的子类实现。 – Moshe 2010-11-29 16:49:43

相关问题