2017-07-05 1 views
2

Je me bats avec ce problème depuis des semaines maintenant. Je l'ai regarder en ligne partout et n'a rien trouvé près de cette question autre que ce 2 liens outsiders:UIImagePickerController fuite de mémoire après le lancement et lors de la prise de vue. Rend l'application obsolète après avoir pris plus de 100 photos

https://github.com/cordova-plugin-camera-preview/cordova-plugin-camera-preview/issues/200

https://issues.apache.org/jira/browse/CB-11784

Mais ceux-ci sont de ne pas utiliser le même environnement et il n'y a pas de solution réelle au problème.

Voici une capture d'écran de mon Instrumentals en utilisant Xcode 8.3 juste après que je lance le imagePicker et prendre une photo:

enter image description here

Voici le code lié à la imagePicker:

 //initializer on my class 
     var imagePicker = UIImagePickerController() 

     //imagepicker setup on ViewDidLoad() 

     imagePicker.delegate = self 
     imagePicker.allowsEditing = false 
     imagePicker.mediaTypes = [kUTTypeImage as String] 

     if UIImagePickerController.isSourceTypeAvailable(.camera) { 
      imagePicker.sourceType = .camera 

     } 
     else { 
     print("Sorry this app only supports camera") 
     } 


     //function to start picker when click on button 
     func startPicker(){ 

     self.present(imagePicker, animated: false, completion: nil) 

     } 

     //delegate functions 

     func imagePickerControllerDidCancel(_ picker: UIImagePickerController) 
     { 
       imagePicker.dismiss(animated: false, completion: nil) 
     } 

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

      //display photo on view 

      imagePicker.dismiss(animated: false, completion: nil) 

     } 

Est-ce un bug sur IOS ou y a-t-il un moyen de se débarrasser de cette fuite de mémoire?

+0

Vous n'êtes pas seul, je peux reproduire ceci sur iOS 10.3.3 et Xcode 8.3.3 en utilisant un code similaire, minimal. L'utilisation de la mémoire "Autres processus" augmente progressivement avec chaque photo prise jusqu'à ce que toute la mémoire système soit épuisée, puis l'application plante avec un message "Connexion perdue" et aucune exception dans l'application (parce que la fuite semble être dans le code UIImageViewController). – davidgoli

+0

Connexes: https://stackoverflow.com/questions/42249570/frequent-camera-capture-crashing-the-app-without-any-clue – davidgoli

+0

Merci pour le lien @davidgoli, je suis heureux de savoir que je ne suis pas le seulement un. Je peux reproduire ce problème en ayant simplement une vue d'image sur mon application. Il s'écrase de toute façon après 40-50 photos. C'est très agaçant et je me bats toujours avec ça. – Fidel

Répondre

0

J'ai aussi eu ce problème. Il semble être un bug connu dans UIImagePickerController.

J'ai créé une application minimale repro ici: https://github.com/davidgoli/UIImagePickerLeakTest

Je l'ai résolu en mettant en place mon propre contrôleur de caméra à l'aide https://github.com/imaginary-cloud/CameraManager.

+0

Je vais vérifier ça! merci – Fidel

+1

J'ai reçu des nouvelles d'Apple après avoir déposé un rapport de bogue. Ils ont fermé mon rapport de bogue en tant que doublon et vérifié qu'un autre bogue ouvert existe pour ce problème. Comme c'est sous NDA, il n'est pas possible de créer un lien vers le rapport de bug original ici. – davidgoli