UIImagePickerController 在启动后和拍照期间泄漏内存。拍摄超过 100 张照片后应用程序崩溃

UIImagePickerController leaking memory after launch and during taking a picture. Makes app crash after taking more than a 100 pictures

几周来我一直在为这个问题苦苦挣扎。我在网上到处查看,除了这 2 个外部链接外,没有发现任何与此问题接近的内容:

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

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

但是他们使用的环境不一样,没有实际解决问题的方法。

这是我启动 imagePicker 并拍照后立即使用 Xcode 8.3 的 Instrumentals 的屏幕截图:

这里是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)

      }

这是 IOS 上的错误还是有办法消除此内存泄漏?

我也遇到了这个问题。这似乎是 UIImagePickerController 中的一个已知错误。

我在这里创建了一个最小的复制应用程序:https://github.com/davidgoli/UIImagePickerLeakTest

我通过使用 https://github.com/imaginary-cloud/CameraManager 实现我自己的相机控制器解决了这个问题。

我只想指出,从 IOS 12 开始,这个问题仍然存在,我不得不使用 AVFoundation 的 Camera 来避免崩溃。使用 AVFoundation 我可以拍摄数百张照片并且没有发生内存泄漏。