Я новичок в программировании в целом, и у меня возникли проблемы с утечкой памяти из-за следующего кода, специально связанного с «imagePickerController». Утечки происходят только после того, как UIimagePickerController закрывается после выбора изображения. Спасибо за любую помощь, исправляющую это.
let imagePicked = UIImagePickerController()
@IBAction func addPhoto(_ sender: UIBarButtonItem) {
let pickerController = UIImagePickerController()
pickerController.delegate = self
pickerController.allowsEditing = false
imagePicked.delegate = self
let alertController = UIAlertController(title: "Add New Image", message: "Choose From", preferredStyle: .actionSheet)
let cameraAction = UIAlertAction(title: "Camera", style: .default) { (action) in
pickerController.sourceType = .camera
self.present(pickerController, animated: true, completion: nil)
}
let photosLibraryAction = UIAlertAction(title: "Photos Library", style: .default) { (action) in
pickerController.sourceType = .photoLibrary
self.present(pickerController, animated: true, completion: nil)
}
let cancelAction = UIAlertAction(title: "Cancel", style: .destructive, handler: nil)
alertController.addAction(cameraAction)
alertController.addAction(photosLibraryAction)
alertController.addAction(cancelAction)
present(alertController, animated: true, completion: nil)
}
@objc func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
if let image = info[UIImagePickerControllerOriginalImage] as? UIImage {
var newImageView = UIImageView()
newImageView = UIImageView(image: image)
newImageView.contentMode = .scaleAspectFit
newImageView.center = textView.center
textView.addSubview(newImageView)
}
dismiss(animated: true, completion: nil)
}
РЕДАКТИРОВАТЬ ОДИН:
Спасибо, я удалил @objc
перед didFinishPickingMediaWithInfo
, а также дополнительным UIImagePickerController
объектом, но у меня все еще остается та же проблема. Я также попытался picker.dismiss(animated: true, completion: nil)
, но это все еще не решает проблему.
И да, я почти уверен, что это ошибка утечки памяти, поскольку я запустил тестер и после помещения изображений в приложение из библиотеки фотографий или с камеры я получаю следующее:
картинка 1
изображение 2
Также после добавления нескольких картинок приложение вылетает с сообщением «Прервано из-за проблем с памятью»