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 我可以拍摄数百张照片并且没有发生内存泄漏。
几周来我一直在为这个问题苦苦挣扎。我在网上到处查看,除了这 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 我可以拍摄数百张照片并且没有发生内存泄漏。