Received memory warning on setimage

Posted by Sam Budda on Stack Overflow See other posts from Stack Overflow or by Sam Budda
Published on 2012-10-07T21:35:59Z Indexed on 2012/10/07 21:37 UTC
Read the original article Hit count: 235

Filed under:
|
|
|
|

This problem has completely stumped me. This is for iOS 5.0 with Xcode 4.2

What's going on is that in my app I let user select images from their photo album and I save those images to apps document directory. Pretty straight forward.

What I do then is that in one of the viewController.m files I create multiple UIImageViews and I then set the image for the image view from one of the picture that user selected from apps dir. The problem is that after a certain number of UIImage sets I receive a "Received memory warning". It usually happens when there are 10 pictures. If lets say user selected 11 pictures then the app crashes with Error (GBC). NOTE: each of these images are at least 2.5 MB a piece.

After hours of testing I finally narrowed down the problem to this line of code

[button1AImgVw setImage:image];

If I comment out that code. All compiles fine and no memory errors happen. But if I don't comment out that code I receive memory errors and eventually a crash. Also note it does process the whole CreateViews IBAction but still crashes at the end. I cannot do release or dealloc since I am running this on iOS 5.0 with Xcode 4.2

Here is the code that I used. Can anyone tell me what did I do wrong?

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    [self CreateViews];

}

-(IBAction) CreateViews
{
        paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask ,YES);
            documentsPath = [paths objectAtIndex:0]; 

        //here 15 is for testing purposes    
        for (int i = 0; i < 15; i++) 
        {

        //Lets not get bogged down here. The problem is not here
        UIImageView *button1AImgVw = [[UIImageView alloc] initWithFrame:CGRectMake(10*i, 10, 10, 10)];
    [self.view addSubview:button1AImgVw];

        NSMutableString *picStr1a = [[NSMutableString alloc] init];
         NSString *dataFile1a = [[NSString alloc] init];


        picStr1a = [NSMutableString stringWithFormat:@"%d.jpg", i];


         dataFile1a = [documentsPath stringByAppendingPathComponent:picStr1a];
          NSData *potraitImgData1a =[[NSData alloc] initWithContentsOfFile:dataFile1a];
          UIImage *image = [[UIImage alloc] initWithData:potraitImgData1a];

        // This is causing my app to crash if I load more than 10 images!
        //[button1AImgVw setImage:image];

        }

NSLog(@"It went to END!");

}


//Error I get when 10 images are selected. App does launch and work
2012-10-07 17:12:51.483 ABC-APP[7548:707] It went to END!
2012-10-07 17:12:51.483 ABC-APP [7531:707] Received memory warning.

//App crashes with this error when there are 11 images
2012-10-07 17:30:26.339 ABC-APP[7548:707] It went to END!
(gdb)

© Stack Overflow or respective owner

Related posts about iphone

Related posts about ios