application:didFinishLaunchingWithOptions:内存管理

时间:2010-12-12 11:35:48

标签: iphone objective-c memory-management ios

我对内存管理有疑问。在我的app委托中,我有以下方法;其中welcomeViewController是伊瓦尔。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    welcomeViewController = [[CBWelcomeViewController alloc] init];
    UINavigationController *appNavigationController = [[UINavigationController alloc] initWithRootViewController:welcomeViewController];
    [self.window addSubview: [appNavigationController view]];
    [self.window makeKeyAndVisible];
    return YES;
}

要释放welcomeViewController的内存,我只需在dealloc方法中调用release即可。

- (void)dealloc {
    [welcomeViewController release];
    [window release];
    [super dealloc];
}

我的问题是,管理appNavigationController的内存的正确方法是什么?

2 个答案:

答案 0 :(得分:1)

您应该在appNavigationController中将release设为实例变量并dealloc

您不需要将welcomeViewController作为实例变量,恰恰相反。 只需分配/初始化它,然后将其传递给UINavigationController,然后保留它,然后立即release

答案 1 :(得分:1)

您需要在dealloc方法中释放它,就像您当前正在发布welcomeViewController一样。

(顺便说一句,实际上你应该在使用它来启动导航控制器之后直接释放welcomeViewController(即:在你的init方法中),因为导航控制器将保留它。)