2016-11-18 2 views
1

ギャラリーから写真を撮っているカメラのカスタムビューを作成していますが、フォトギャラリーはうまく動作しますが、カメラはうまく動作しません。 UIImagePickerControllerを使用して、それはメモリリークを引き起こし、アプリケーションをシャットダウンした後、私は適切にpresentingviewcontrollerとdissmissingviewcontrollerですが、メモリリークの問題をとにかく作成します。問題を追跡するためにリーク計測器を使用しました。新しいインスタンスが写真を撮るように見える毎回UIImagePickerControllerすぐに2 3枚の写真を撮った後にリークが発生する

 Avfoundation -[AVCapturePhotoOutput init] 
     NSSmutableArray Avfoundation -[[AVCapturePhotoOutput init] 

どうすれば解決できますか?私はメモリリークを管理するのが良くないからです。

編集: これはdidfinishdelegateメソッドです!

func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]){ 

    if let image = info[UIImagePickerControllerOriginalImage] as? UIImage{ 

     self.delegate?.didFinishTakingPhoto(image) 
     picker.dismissViewControllerAnimated(true, completion: {() -> Void in 
      self.popMe(false) 
     }) 

} }

func didFinishTakingPhoto(image: UIImage) 
     { 
    self.imageView.image = image; 
    self.startActivity("", detailMsg: "") 
    self.view.userInteractionEnabled = false 
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0)) {() -> Void in 

     if let chokusItem = self.item { 
      var size = CGSizeMake(600.0, CGFloat.max) 
      if Global.shared.highQualityPhotoEnables { 
       size.width = 900.0 
      } 
      let scaledImage = self.imageView.image!.resizedImageWithContentMode(UIViewContentMode.ScaleAspectFit, bounds: size, interpolationQuality: CGInterpolationQuality.High) 
      let thumbSize = CGSizeMake(80.0, CGFloat.max) 
      self.thumbImage = self.imageView.image!.resizedImageWithContentMode(UIViewContentMode.ScaleAspectFit, bounds: thumbSize, interpolationQuality: CGInterpolationQuality.High) 

      self.photo = PhotoViewModel(image: scaledImage, parent: chokusItem) 

      let delay = 0 * Double(NSEC_PER_SEC) 
      let time = dispatch_time(DISPATCH_TIME_NOW, Int64(delay)) 
      dispatch_after(time, dispatch_get_main_queue(), { 
       self.imageView.image = scaledImage 
       self.stopActivity() 
       self.removeCommentTableViews() 
       self.removeCommentViews() 
       self.view.userInteractionEnabled = true 
       self.showPhotoLimitAlertIfRequired() 
      }) 
      if Global.shared.shouldSavePhotoToGallery { 

       let assetsLibrary = ALAssetsLibrary() 
       assetsLibrary.saveImage(scaledImage, toAlbum: "Inspection Images", completion: { (url, error) -> Void in 
        print("success", terminator: "") 
        }, failure: { (error) -> Void in 
         print("failure", terminator: "") 
       }) 
      } 
     } 
    } 
} 
+0

didFinishPickingImageデリゲートにコードを投稿できますか? – ebby94

+0

@ ebby94私の投稿を編集しました.. –

答えて

0

これはiOSのバグのいくつかの種類のように見える、私は「didnのため、しかし、私は、自分の質問を行った後に、このスレッドを指摘してしまったことを確認していませんこれを見つけなさい。

しかし、あなたとはまったく異なる方法でコードを初期化していますが、リークしたオブジェクトは同じように見えます。

私は上のこれにレーダーを開設しています。この回答少なくとも私は確認を待っていながら、時間を無駄にあなたにいくつかのより少ない頭痛を与える https://stackoverflow.com/questions/41111899/avcapturephotooutput-memory-leak-ios

希望:あなたはまた、ここに私の質問を見ることができます https://openradar.appspot.com/29495120

関連する問題