Tengo un UIScrollView grande en el que estoy colocando 3-4 celdas de imagen bastante grandes (320x1500 pixels o menos) UIImageView. Estoy agregando estos UIImageViews a la vista de desplazamiento dentro de mis archivos NIB. Tengo una salida en mi controlador, y eso es para UIScrollView. Estoy usando una propiedad (no atómica, retener) para esto y lo estoy sintetizando.Problema dealloc'ing memory utilizado por UIImageViews con una imagen bastante grande en un UIScrollView
Mi pregunta es esta: Cuando observo esto en el Monitor de la memoria, puedo ver que la memoria utilizada sube un poco cuando se carga la vista con todas estas imágenes (como se esperaba). Pero cuando dejo la vista, ella y su controlador son desasignados, pero no parecen ceder en ninguna parte cerca de la memoria que habían tomado. Cuando corté una de estas vistas (hay varias en mi aplicación) hasta solo 1-3 imágenes que eran 320x460 y dejé todo lo demás igual, recaptura la memoria muy bien.
¿Hay algún problema con el uso de imágenes de este tamaño? ¿Estoy haciendo algo mal en este código (pegado a continuación)?
Este es un fragmento del viewController que está causando problemas.
- (CGFloat)findHeight
{
UIImageView *imageView = nil;
NSArray *subviews = [self.scrollView subviews];
CGFloat maxYLoc = 0;
for (imageView in subviews)
{
if ([imageView isKindOfClass:[UIImageView class]])
{
CGRect frame = imageView.frame;
if ((frame.origin.y + frame.size.height) > maxYLoc) {
maxYLoc = frame.origin.y;
maxYLoc += frame.size.height;
}
}
}
return maxYLoc;
}
- (void)viewDidLoad {
[super viewDidLoad];
[self.scrollView setContentSize:CGSizeMake(320, [self findHeight])];
[self.scrollView setCanCancelContentTouches:NO];
self.scrollView.indicatorStyle = UIScrollViewIndicatorStyleWhite;
self.scrollView.clipsToBounds = YES;
self.scrollView.scrollEnabled = YES;
self.scrollView.pagingEnabled = NO;
}
- (void)dealloc {
NSLog(@"DAY Controller Dealloc'd");
self.scrollView = nil;
[super dealloc];
}
ACTUALIZACIÓN: He notado otro fenómeno extraño. Si no uso el desplazamiento en la vista, parece estar colgando en la memoria. Pero si me desplazo un montón y me aseguro de que todos los UIImageViews se vuelvan visibles en un punto, se liberarán y recuperarán la mayor parte de la memoria que perdió.
ACTUALIZACIÓN2: El motivo por el que le pregunto esto es porque mi aplicación se está bloqueando debido a la poca memoria. No me importaría si se tratara de almacenamiento en caché y el uso de memoria adicional, pero no parecen liberar cada vez que - incluso en condiciones didReceiveMmoryWarning
un poco tarde pero ¿enviaste el error a Apple? Porque estoy de acuerdo con esto, es un error en ese lado. Nunca se borra. El mismo problema me está sucediendo al usar imageWithData. –