我对内存管理有疑问。在我的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
的内存的正确方法是什么?
答案 0 :(得分:1)
您应该在appNavigationController
中将release
设为实例变量并dealloc
。
您不需要将welcomeViewController
作为实例变量,恰恰相反。
只需分配/初始化它,然后将其传递给UINavigationController
,然后保留它,然后立即release
。
答案 1 :(得分:1)
您需要在dealloc方法中释放它,就像您当前正在发布welcomeViewController一样。
(顺便说一句,实际上你应该在使用它来启动导航控制器之后直接释放welcomeViewController(即:在你的init方法中),因为导航控制器将保留它。)