UIImagePickerController проблема утечки памяти - PullRequest
1 голос
/ 16 апреля 2019

В моем приложении я использую UIImagePickerController, чтобы брать фотографии, видео, выбирать изображения из галереи и сохранять их в каталоге документов приложения. Если мы запустим камеру и сделаем снимок / видео, приложение начнет закрываться без какого-либо журнала сбоя. При каждом запуске камеры в приложении расход ОЗУ увеличивается, и через некоторое время приложение закрывается, говоря «Приложение остановлено из-за проблемы с памятью». Я наблюдал эту утечку памяти в XCode (10.1) и инструменте.

func takePhoto() {

    if UIImagePickerController.isSourceTypeAvailable(UIImagePickerController.SourceType.camera) {
        self.mediaType = .Photo
        let imagePicker = UIImagePickerController()
        imagePicker.delegate = self
        imagePicker.sourceType = UIImagePickerController.SourceType.camera
        imagePicker.allowsEditing = false
        imagePicker.hidesBarsOnTap = true
        imagePicker.isNavigationBarHidden = true;
        self.present(imagePicker, animated: true, completion: nil)
    }
}

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
    // Local variable inserted by Swift 4.2 migrator.
      let info = convertFromUIImagePickerControllerInfoKeyDictionary(info)
      if let image = info[convertFromUIImagePickerControllerInfoKey(UIImagePickerController.InfoKey.originalImage)] {

                //Writing the image to document directory

      }
        picker.dismiss(animated: true, completion: nil)
}

// Вспомогательная функция введена в Swift 4.2 migrator.

  fileprivate func convertFromUIImagePickerControllerInfoKeyDictionary(_ input: [UIImagePickerController.InfoKey: Any]) -> [String: Any] {
        return Dictionary(uniqueKeysWithValues: input.map {key, value in (key.rawValue, value)})
    }

// Вспомогательная функция введена в Swift 4.2 migrator.

fileprivate func convertFromUIImagePickerControllerInfoKey(_ input: UIImagePickerController.InfoKey) -> String {
    return input.rawValue
}

XCode 10.1 Swift 4.2 версия для iOS - 10.2.1 RAM устройств - 1 ГБ / 2 ГБ Устройства - iPad Pro, iPad Mini Памятка - 16 ГБ, 64 ГБ, 32 ГБ

Не могли бы вы помочь с этим и предложить лучшее решение

Спасибо

1 Ответ

0 голосов
/ 27 апреля 2019

У меня такая же проблема и я приземлился здесь. Вы уже решили проблему?

кто-то, кажется, имеет это давным-давно. Я пытался, и, кажется, помогает:

Приложение завершено из-за нехватки памяти при использовании камеры в iOS 7

...