Note that there are some explanatory texts on larger screens.

plurals
  1. POProblem dealloc'ing memory used by UIImageViews with fairly large image in an UIScrollView
    text
    copied!<p>I have a large UIScrollView into which I'm placing 3-4 rather large (320x1500 pixels or so) UIImageView image tiles. I'm adding these UIImageViews to the scroll view inside of my NIB files. I have one outlet on my controller, and that is to the UIScrollView. I'm using a property (nonatomic, retain) for this, and sythesizing it.</p> <p>My question is this: When I observe this in Memory Monitor, I can see that the memory used goes up quite a bit when the view with all these images is loaded (as expected). But when I leave the view, it and its controller are dealloc'd, but do not seem to give up anywhere near the memory they had taken up. When I cut one of these views (there are several in my app) down to just 1-3 images that were 320x460 and left everything else the same, it recaptures the memory just fine.</p> <p>Is there some issue with using images this large? Am I doing something wrong in this code (pasted below)?</p> <p>This is a snippet from the viewController that is causing problems.</p> <pre><code>- (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) &gt; 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]; } </code></pre> <p>UPDATE: I've noticed another weird phenomenon. If I don't use the scroll on the view, it seems to be hanging on to the memory. But if I scroll around a bunch and ensure that all of the UIImageViews became visible at one point, it will free up and regain most of the memory it lost.</p> <p>UPDATE2: The reason I'm asking this is my app is actually crashing due to low memory. I wouldn't mind if it were just caching and using up extra memory, but it doesn't seem to ever release it - even in didReceiveMmoryWarning conditions</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload