我不明白爲什麼這段代碼被標記爲具有內存泄漏:爲什麼儀器在UIColor和NSArray上標記內存泄漏?
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
MenuViewController *menuView = [[MenuViewController alloc] initWithNibName:@"MenuView" bundle:[NSBundle mainBundle]];
navigationController = [[UINavigationController alloc] initWithRootViewController:menuView];
navigationController.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"livreto-verso-horizontal.png"]]; // memory leak here 47,1%
[menuView release];
BilheteViewController *rightView = [[BilheteViewController alloc] initWithNibName:@"BilheteView" bundle: [NSBundle mainBundle]];
spliViewController.viewControllers = [NSArray arrayWithObjects:navigationController, rightView, nil]; // memory leak here 52,9%
[window addSubview:spliViewController.view];
[window makeKeyAndVisible];
[rightView release];
return YES;
}
就行標有問題:
navigationController.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"livreto-verso-horizontal.png"]]
和
spliViewController.viewControllers = [NSArray arrayWithObjects:navigationController, rightView, nil];
我如何解決這個泄漏?
更新1
應用程序委託的dealloc方法,既navigationController和spliViewController被釋放:
- (void)dealloc {
[navigationController release];
[spliViewController release];
[window release];
[super dealloc];
}
我已經用釋放我的導航控制器的dealloc方法更新了這個問題。我不認爲這是錯的。你做? – 2010-07-15 13:01:16
由於您正在應用程序委託中設置該視圖,所以不應調用dealloc。 通常情況下,您絕不會在視圖控制器中釋放導航控制器。 – 2010-07-15 22:39:33
嗨肯德爾,那麼我應該用什麼方法來釋放應用程序委託上的控制器? applicationWillFinish? – 2010-07-16 11:08:57