Я надеялся, что кто-нибудь может помочь мне с проблемой памяти на iPhone.
У меня есть прокрутка, являющаяся частью контроллера навигации.
Всякий раз, когда я впервые нажимаю на навигационный контроллер и прокручиваю просмотр прокрутки (добавляя изображения по мере движения), память выделяется огромными кусками (скажем, по 1 МБ каждый).
Если я поверну дисплей пару раз, память будет освобождена, и все в порядке: представление прокрутки работает правильно, и память возвращается туда, где она должна быть (около 1 МБ, глядя на Net alloc в Instruments).
Как сохранить память или освободить ее во время использования прокрутки, как вращение устройства?
Вот фрагмент кода, который вызывается для загрузки страницы просмотра прокрутки:
- (void)loadPage:(int)page isCurrent:(BOOL)isCurrent {
if (page < 0) return;
if (page >= totalRows) return;
picViewController *controller = [[picViewController alloc] init];
if ((NSNull *)[viewControllers objectAtIndex:page] == [NSNull null]) {
NSString *fullPath = [self fullPath];
if([fileManager fileExistsAtPath:fullPath]) {
currentImage=[UIImage imageWithContentsOfFile:fullPath];
[controller setImg:currentImage];
[viewControllers replaceObjectAtIndex:page withObject:controller];
}
else {
AsyncImageView* asyncImage = [[AsyncImageView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]];
asyncImage.tag = 8;
[asyncImage loadImageFromName:imageName withURL:url];
[controller.view addSubview:asyncImage];
[asyncImage release];
[viewControllers replaceObjectAtIndex:page withObject:controller];
}
if (nil == controller.view.superview) {
CGRect frame = scrollView.frame;
frame.origin.x = frame.size.width * page;
frame.origin.y = 0;
controller.view.frame = frame;
[scrollView addSubview:controller.view];
}
[controller release];
}
}