开发者

Is there a way to force a UIView to release a subview?

开发者 https://www.devze.com 2023-01-27 16:07 出处:网络
Say I pass a UIViewController to a UINavigationController like so: SettingsViewController *settingsRootView = [[S开发者_运维问答ettingsViewController alloc] initWithNibName:@\"SettingsViewController\

Say I pass a UIViewController to a UINavigationController like so:

SettingsViewController *settingsRootView = [[S开发者_运维问答ettingsViewController alloc] initWithNibName:@"SettingsViewController" bundle:nil];
    SettingsNavigationController *settingsView = [[SettingsNavigationController alloc] initWithRootViewController:settingsRootView];   
    [settingsRootView release]; 
    [self presentModalViewController:settingsView animated:YES];
    [settingsView release];

I release my retain on the original UIViewController, settingsRootView, but settingsView holds a retain on it. When I dismiss settingsView, it should release itself and all of its children, but for some reason it's not. Is there a way to tell my main application view that it's done with settingsView to force my main view to release settingsView and all of its subviews?


To force your settingsView to release any controllers it is managing, call settingsView.viewControllers = nil.

But this should happen automatically when settingsView is released. Place a breakpoint in the dealloc method of your settingsView to ensure it is being released. Make sure dealloc is calling [super dealloc].

0

精彩评论

暂无评论...
验证码 换一张
取 消