Это мой первый пост, а вы моя последняя надежда.
У меня есть список с изображениями в моем приложении для iPad, если вы выберете один, мой класс MyViewController
, который расширяется UIViewController
, загружен ипоказано (просто установив window.rootViewController
, используя UINavigationController
, presentModalViewController
- все перепробовал, без разницы).Он имеет UIScrollView
внутри, что добавляет большую версию изображения к UIScrollView
с этим кодом:
UIImageView *tempImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:[[delegate getImageNames] objectAtIndex:(gameNr*2)]]];
tempImageView.frame = CGRectMake(0,0,tempImageView.frame.size.width/2,tempImageView.frame.size.height/2);
[self setMyImage:tempImageView];
[tempImageView release];
myScrollView.contentSize = CGSizeMake(myImage.frame.size.width, myImage.frame.size.height);
myScrollView.maximumZoomScale = 2.0;
myScrollView.minimumZoomScale = 1.0;
myScrollView.clipsToBounds = YES;
myScrollView.bounces = NO;
myScrollView.delegate = self;
[myScrollView addSubview: myImage];
myImage
является свойством (nonatomic, retain)
типа UIImageView
внутриmy MyViewController
.
После нажатия кнопки и возврата к списку изображений я освобождаю ссылку на MyViewController
, и ее метод dealloc вызывается так:
- (void)dealloc
{
CFShow(@"dealloc!");
for(UIImageView *subview in [myScrollView subviews]) {
if(subview.frame.size.width > 20){
[subview removeFromSuperview];
[subview setImage:nil];
}
}
[myImage setImage:nil];
self.myScrollView = nil;
self.myImage = nil;
[myScrollView release];
[myImage release];
[super dealloc];
}
Это работает до сих пор, но проблема в том, что память изображений на самом деле не освобождается таким образом.После открытия и закрытия около 12 изображений приложение вылетает с предупреждением памяти.Это также подтверждается методом report_memory, который я получил здесь: Сбой памяти в iOS, но очень низкое использование памяти
Вызван метод dealloc, проверен трижды.Я проверил переменные myImage
и myScrollView
через точку останова в отладчике, они установлены в 0x0 этими командами в методе dealloc
.Почему память не освобождается ????????
Спасибо за любые предложения, я работаю над этим целых три дня, это сводит меня с ума.