为什么我无法释放我添加到窗口的视图的导航控制器

时间:2011-11-20 11:07:06

标签: iphone objective-c memory-management uinavigationcontroller addsubview

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    [self setWindow:[[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease]];

    // Override point for customization after application launch.
    //self.window.backgroundColor = [UIColor whiteColor];

    // Create First view
    FirstViewController *firstViewCTL = [[FirstViewController alloc] init];

    // Create UINavigationController
    UINavigationController *navCTL = [[UINavigationController alloc] init];
    [[navCTL navigationBar] setBarStyle:UIBarStyleBlack];
    [navCTL pushViewController:firstViewCTL animated:NO];
    [firstViewCTL release];

    [[self window] addSubview:navCTL.view];
    [navCTL release];
    [[self window] makeKeyAndVisible];
    return YES;
}

据我所知,添加subview(addSubview :)会保留视图。但是为什么我现在无法释放拥有已保留视图的导航控制器(navCTL)

1 个答案:

答案 0 :(得分:2)

-addSubview:保留视图,而不是视图控制器

您可以使用UIWindow的{​​{1}}属性(iOS 4及更高版本)来保留视图控制器,还可以保存您自己将视图添加为子视图。

rootViewController