UIImagePickerController, имеющий проблемы даже после объявления из Appdelegate - PullRequest
1 голос
/ 29 июля 2011

мы делаем приложение для фотографий, в котором используется UIImagePickerController.Для поддержки только одного экземпляра контроллера мы объявили его в приложении appdelegate.Но даже после этой утечки памяти все еще есть.Может ли кто-нибудь помочь нам
Вот наш код

В AppDelegate.h

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

В AppDelegate.m

@synthesize imagePicker;

и в событии applicationDidFinishLaunching

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

Необходимо вызвать этот UIImagePicker в CameraView

В CameraView.h

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

В CameraView.m

@synthesize appDel;

и в 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];

в 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];
}

После съемки фотографии мы показываем предварительный просмотр в другом виде.поэтому мы несколько раз вызываем Cameraview, что приводит к помощи в утечке памяти.

1 Ответ

0 голосов
/ 29 июля 2011

Прежде всего вам не нужно беспокоиться о поддержке только одного экземпляра imagepickercontroller. Получение изображения с камеры намного проще, чем то, что вы делаете.

Смотрите мой пост здесь:

Как сделать снимок с камеры и сохранить в фотоальбоме программным способом?

, так как я отпускаю сборщик, когда изображение закончено. Не будет утечки памяти!

...