UIImagePickerController Проблема утечки памяти, .camera хороша, но не для .photoLibrary - PullRequest
0 голосов
/ 21 ноября 2018

UIImagePickerController Проблема утечки памяти, .camera хороша, но не для .photoLibrary

Вот код:

func PickLibraryTapped() {
    if UIImagePickerController.isSourceTypeAvailable(.photoLibrary) {
        let LibraryPhotoPicker = UIImagePickerController()
        LibraryPhotoPicker.sourceType = .photoLibrary
        LibraryPhotoPicker.delegate = self
        LibraryPhotoPicker.allowsEditing = false
        self.present(LibraryPhotoPicker, animated: true, completion: nil)
    }
    else
    {
        print("模拟其中无法打开照相机,请在真机中使用");
    }
}

Метод делегата:

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
    let info = convertFromUIImagePickerControllerInfoKeyDictionary(info)
    let pickedImage = info[convertFromUIImagePickerControllerInfoKey(UIImagePickerController.InfoKey.originalImage)] as! UIImage
    picker.dismiss(animated: true, completion:nil)
}

Ошибки: устройство выдает предупреждение, указывающее, что «утечка памяти» и «объект освобожден» (UIImagePickerController)

In case that UIImagePickerController should not be dealloced, override -willDealloc in UIImagePickerController by returning NO.

UPDATE !!!:

Проблема решена: проблема возникла из-за pod "MLeakFinder "был использован, после Unistall MLeakFinder всплывающее предупреждение исчезло.Код не содержит ошибок.

Напоминание: convertFromUIImagePickerControllerInfoKeyDictionary больше не используется в этом коде.Следует попробовать ниже:

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
    if let pickedImage = info[.originalImage] as? UIImage {
        //Do something you need
    }
    self.dismiss(animated: true, completion: nil)
}
...