1

we are doing a photo application in which UIImagePickerController is used. For maintaining only one instance of the controller we have declared it in the appdelegate. But even after doing that memory leak is still there. Can any one please help us
Here's our code

In AppDelegate.h

UIImagePickerController *imagePicker;
@property (nonatomic, retain) UIImagePickerController *imagePicker;

In AppDelegate.m

@synthesize imagePicker;

and in applicationDidFinishLaunching event

imagePicker = [[[UIImagePickerController alloc] init] autorelease];

Need to call this UIImagePicker in CameraView

In CameraView.h

RedDawnMediaAppDelegate *appDel;
@property (nonatomic, retain) RedDawnMediaAppDelegate *appDel;

In CameraView.m

@synthesize appDel;

and in viewDidLoad

appDel=(RedDawnMediaAppDelegate*)[[UIApplication sharedApplication] delegate];

appDel.imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
// Hide the camera controls:
appDel.imagePicker.showsCameraControls = NO;
appDel.imagePicker.navigationBarHidden = YES;
appDel.imagePicker.delegate = self;

// Make the view full screen:
appDel.imagePicker.wantsFullScreenLayout = YES;
appDel.imagePicker.cameraViewTransform =       CGAffineTransformScale(appDel.imagePicker.cameraViewTransform, CAMERA_TRANSFORM_X, CAMERA_TRANSFORM_Y);

// Now incert our overlay view (it has to be here cuz it's a modal view):
appDel.imagePicker.cameraOverlayView = overlayView;

[self presentModalViewController:appDel.imagePicker animated:YES];

in didFinishPickingMediaWithInfo

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {

[appDelegate.imagePicker dismissModalViewControllerAnimated:YES];

uploadImage = [info objectForKey:@"UIImagePickerControllerOriginalImage"]; 
[uploadImage retain];
NSData *imageData = UIImageJPEGRepresentation(uploadImage, 0.5);
//[uploadImage release];
UIImage *image=[UIImage imageWithData:imageData];


self.view.frame = CGRectMake(0, 0, 320, 480);
self.wantsFullScreenLayout = YES;
objCameraImageView = [[CameraImageView alloc] initWithNibName:@"CameraImageView" bundle:[NSBundle mainBundle]];
[objCameraImageView setParentController:self];
objCameraImageView.cameraImage = image;
[image release];
uploadImage = nil;
[self.view addSubview:objCameraImageView.view];
[self release];
}

After taking a photo we are showing the preview in another view. so we are invoking the Cameraview for several times which is leading to Memory leak pls help.

Reporter
  • 3,897
  • 5
  • 33
  • 47
Anoop
  • 11
  • 1

1 Answers1

0

First of all you dont need to worry about maintaining only one instance of imagepickercontroller. Getting an image from camera is much simpler than what you are doing.

See my post here:

How to take picture from Camera & saved in Photo Gallery by programmatically?

since Im releasing the picker when its done getting the image. There wont be memory leak!

Community
  • 1
  • 1
Bushra Shahid
  • 3,579
  • 1
  • 27
  • 37