2013-09-22 3 views
1

В моем приложении я запустить камеру, чтобы позволить пользователю сделать фото:утечка памяти после того, как я беру фото из UIImagePickerControllerSourceTypeCamera

UIImagePickerController *imagePickerControllerSubject = [[UIImagePickerController alloc] init]; 

    imagePickerControllerSubject.delegate = self; 

    imagePickerControllerSubject.sourceType = UIImagePickerControllerSourceTypeCamera; 

    [self presentModalViewController:imagePickerControllerSubject animated:YES]; 

И после того, как снимок сделан, я получил утечку памяти, вы можете увидеть мои Снимок экрана из Xcode Instrument.

enter image description here

Я изолировал код. Я уверен, что это происходит из камеры, а не из моего приложения, я ничего не оставил в своей функции didFinishPickingImage.

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo 
    { 

      [picker dismissModalViewControllerAnimated:YES]; 

      return; 

    } 

Я использую ARC, так что я не нужно освободить imagePickerControllerSubject

Вот скриншот из Xcode Instruments

Я использую последнюю версию ios7

Любая идея?

Благодаря

EDIT

Я мимо здесь весь код моего зрения контроллера. Это не может быть проще. И не забывайте, что я получаю эту утечку памяти только с iOS 7 и только тогда, когда тип суса - камера.

#import "FeedbackVC.h" 

    @interface FeedbackVC() 

    @end 

    @implementation FeedbackVC 

    - (IBAction)onClickTakePicture 
    { 

     NSLog(@"onClickTakePicture"); 

     imagePickerControllerSubject = [[UIImagePickerController alloc] init]; 

     imagePickerControllerSubject.delegate = self; 

     imagePickerControllerSubject.sourceType =    UIImagePickerControllerSourceTypeCamera; 

     [self presentModalViewController:imagePickerControllerSubject animated:YES]; 

    } 

    - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo 
    { 


     picker.delegate = nil; 
     [self dismissViewControllerAnimated:NO completion:nil]; 
     picker = nil; 

     NSLog(@"imagePickerController"); 

    } 

    - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
    { 
     self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 

     if (self) 
     { 
      // Custom initialization 
      if (self) 
      { 
       self.navigationItem.title = @"Feedback"; 

       self.title = @"Feedback"; 

       self.tabBarItem.image = [UIImage imageNamed:@"second"]; 
      } 

     } 


     return self; 
    } 

    - (void)viewDidLoad 
    { 
     [super viewDidLoad]; 

    } 

    - (void)didReceiveMemoryWarning 
    { 
      [super didReceiveMemoryWarning]; 
      // Dispose of any resources that can be recreated. 
    } 

    @end 

ответ

1

В:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo 

Try:

picker.delegate = nil 
[self dismissViewControllerAnimated:NO completion:nil]; 
picker = nil; 
+0

Не работает :(я до сих пор утечка памяти, только после того, как метод вызывается (и только если фото было. взято камерой) –

+0

@ JeanFrançoisManatane У вас есть оверлей для просмотра камеры? Если это так, было бы полезно, если бы вы опубликовали некоторый код этого. – Unheilig

+0

Нет наложения :(Я действительно не использую камеру, просто imagepicker w с типом источника камеры. –

Смежные вопросы