Re: memory allocation different in simulator and on the iPhone [solved]
Re: memory allocation different in simulator and on the iPhone [solved]
- Subject: Re: memory allocation different in simulator and on the iPhone [solved]
- From: Dragos Ionel <email@hidden>
- Date: Fri, 24 Jul 2009 18:21:11 -0400
Dear all,
Thank you all for the feedback. With that help and few hours of digging I
was able to solve the problem.
Just for reference here is what I was doing wrong;
1.
UIImage* image = [UIImage imageNamed:fileName];
UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
*[image **release**];*
If an image is created using imageNamed, then it is released automatically
so [image release] is incorrect;
2. At one point I was doing [titleLabel dealloc] for a UILabel instead of
[titleLabel release];
*How I discover where it was crashing*? I added NSLog in different part of
the code, run the application in simulator, and selected Hardware ->
Simulate Memory Warning.
*How I got tricked?* I looked at memory allocation and after each
imagedNamed there was a huge increase. That made me think that I have to
release the image which is not correct. The imageNamed is caching the image,
but it is clearing the cache when need be.
Your help was much appreciated!
Dragos
On Thu, Jul 23, 2009 at 10:07 PM, Dragos Ionel <email@hidden>wrote:
> Hi,
> I am working on a animal encyclopedia on iPhone. One of the pages displays
> one photo of an animal. When the user swipes the screen the image is
> replaced with another one.
>
> This works fine and when tested in the simulator with the Instrument for
> Object Allocation, all looks cool.
>
> When I tested on the real iPhone with Instrument, the memory used increases
> slowly but constantly so that eventually the application dies.
>
> Here is the method that is doing the image changing (direction means if the
> new image should come from left or from right). The class is a
> UIViewController
>
>
> -(void) displayAnimal: (int) animaIndex fromDirection:(int)direction{
>
> crtIndex = animaIndex;
>
> NSString* animalName = [[animalList objectAtIndex:animaIndex]
> objectForKey:@"name"];
>
> NSString* fileName = [[animalList objectAtIndex:animaIndex] objectForKey
> :@"file"];
>
> self.title = animalName;
>
> //remove all the subviews
>
> for (UIView *view in self.view.subviews) {
>
> [view removeFromSuperview];
>
> }
>
> UIView* backgroundView = [[UIView alloc] initWithFrame:CGRectMake(0, 0,
> 320, 480)];
>
> backgroundView.backgroundColor = [UIColor blackColor];
>
> [self.view addSubview:backgroundView];
>
> [backgroundView release];
>
> UIImage* image = [UIImage imageNamed:fileName];
>
> UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
>
> [image release];
>
> CGRect imageFrame = imageView.frame;
>
> imageFrame.origin = CGPointMake(320*direction,0);
>
> imageView.frame = imageFrame;
>
> [self.view addSubview:imageView];
>
>
> [UIView beginAnimations: nil context: @"identifier"];
>
> [UIView setAnimationCurve: UIViewAnimationCurveEaseInOut];
>
> [UIView setAnimationDuration:0.5];
>
> imageFrame.origin = CGPointMake(0,0);
>
> imageView.frame = imageFrame;
>
> [UIView commitAnimations];
>
> [imageView release];
>
> }
>
> Can you see anything that is not right? Why is the memory allocation
> showing different in simulator and on the iPhone?
>
> Thanks a lot,
> Dragos
>
_______________________________________________
Cocoa-dev mailing list (email@hidden)
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden