我觉得我不明白这里的一些基本内容。我一直在使用Instruments来检查现场分配,一直在我的应用程序中研究内存管理。我有一个模式视图控制器(settingsViewController),它有一个背景图像。我注意到的一件事是,即使调用了settingsViewController dealloc,仍然有一个活的Malloc 520 KB,ImageIO是负责任的库。我希望在解雇settingsViewController后,实时内存降低。 UIImageView仍然挂在某处?使用仪器来改善模态视图控制器的内存管理
下面是我如何在viewDidLoad,
中加载图像,以及在完成时关闭视图控制器。
- (void)loadView {
[super loadView];
////// background ////////
UIImageView *background = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"settings_background.png"]];
[self.view addSubview:background];
[background release];
//////////////////////////
}
- (void)viewDidLoad {
[super viewDidLoad];
///////// done button //////////
UIBarButtonItem *done = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(doneButtonPressed)];
self.navigationItem.leftBarButtonItem = done;
[done release];
////////////////////////////////
}
- (void) doneButtonPressed {
[self dismissModalViewControllerAnimated:YES];
}
- (void)dealloc {
NSLog(@"settingsViewController dealloc"];
[super dealloc];
}
在这一点上,这是所有在settingsViewController,所以不需要做什么特别dealloc
,对不对?以下是我如何在rootViewController中显示testViewController。
- (void) loadSettingsView {
SettingsViewController *settingsViewController = [[SettingsViewController alloc] init];
UINavigationController *settingsNavigationController = [[UINavigationController alloc] initWithRootViewController:settingsViewController];
[self presentModalViewController:settingsNavigationController animated:YES];
[settingsViewController release];
[settingsNavigationController release];
}
我想确保自己明白发生了什么,然后再继续前进。我有几个不同的模式视图控制器,每个都有一个不同的图像作为背景。由于每一个都创建了一个Malloc 520 KB,所以我最终无缘无故地使用了2-3 MB的珍贵内存。什么是持续到520 KB?