В моем приложении я использую 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 ГБ
Не могли бы вы помочь с этим и предложить лучшее решение
Спасибо