Я чувствую, что не понимаю здесь чего-то фундаментального. Я работал над управлением памятью в своем приложении, используя инструменты для проверки распределения в реальном времени. У меня есть модальный контроллер вида ( settingsViewController ), который имеет изображение для фона. Одна вещь, которую я заметил, заключалась в том, что даже после settingsViewController dealloc все еще существует живой Malloc 520 КБ, 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
, верно? Вот как я показываю testViewController в rootViewController .
- (void) loadSettingsView {
SettingsViewController *settingsViewController = [[SettingsViewController alloc] init];
UINavigationController *settingsNavigationController = [[UINavigationController alloc] initWithRootViewController:settingsViewController];
[self presentModalViewController:settingsNavigationController animated:YES];
[settingsViewController release];
[settingsNavigationController release];
}
Я хотел бы убедиться, что я понимаю, что происходит, прежде чем двигаться вперед. У меня есть несколько различных модальных контроллеров представления, каждый с различным изображением в качестве фона. Поскольку каждый из них создает Malloc 520 КБ, я в конечном итоге использую 2-3 МБ драгоценной памяти без веской причины. Что держит за эти 520 КБ?