簡體   English   中英

我從UIImagePickerControllerSourceTypeCamera拍照后出現內存泄漏

[英]Memory leak after i take photo from UIImagePickerControllerSourceTypeCamera

在我的應用程序中,我啟動相機以使用戶拍照:

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

    imagePickerControllerSubject.delegate = self;

    imagePickerControllerSubject.sourceType =  UIImagePickerControllerSourceTypeCamera;

    [self presentModalViewController:imagePickerControllerSubject animated:YES];

拍照后,我發現內存泄漏,您可以從Xcode Instrument中查看我的屏幕截圖。

在此處輸入圖片說明

我隔離了代碼。 我確定它來自相機,而不是來自我的應用程序,我在didFinishPickingImage函數中沒有留下任何內容。

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

           [picker dismissModalViewControllerAnimated:YES];

           return;

    }

我使用ARC,所以不需要釋放imagePickerControllerSubject

這是Xcode Instruments的屏幕截圖

我使用最新版本的ios7

任何想法 ?

謝謝

編輯

我在這里過去了我的視圖控制器的整個代碼。 再簡單不過了。 並且不要忘記,只有在iOS 7且源類型為camera的情況下,我才會出現此內存泄漏。

    #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

在:

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

嘗試:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM