Изучаем Swift 4 и AVFoundation и сталкиваемся с ошибкой при нажатии кнопки «Сфотографировать», выбрасывая 'Thread 1: EXC_BAD_ACCESS (code=1, address=0x596bbeb8)'
вместо того, чтобы перейти к контроллеру предварительного просмотра, чтобы показать только что захваченное изображение.
(Рад предоставить больше кода, просто попытался извлечь то, что, по моему мнению, может быть уместным, чтобы вопрос был как можно более коротким: D)
В моем ViewController.swift:
При нажатии кнопки «Сделать снимок» она называется функцией takepicture ().
func takePicture() {
let settings = AVCapturePhotoSettings()
cameraCaptureOutput?.capturePhoto(with: settings, delegate: self)
}
Затем для делегата:
extension ViewController : AVCapturePhotoCaptureDelegate {
func photoOutput(_ output: AVCapturePhotoOutput, didFinishProcessingPhoto photo: AVCapturePhoto, error: Error?) {
if let unwrappedError = error {
print(unwrappedError.localizedDescription)
} else {
let imageCaptured = photo.cgImageRepresentation()!.takeRetainedValue()
let finalImage = UIImage(cgImage: imageCaptured)
displayCapturedPhoto(capturedPhoto: finalImage)
}
}
}
Функция displayCapturedPhoto()
:
func displayCapturedPhoto(capturedPhoto : UIImage) {
let imagePreviewViewController = storyboard?.instantiateViewController(withIdentifier: "imagePreviewViewController") as! imagePreviewViewController
imagePreviewViewController.capturedImage = capturedPhoto
navigationController?.pushViewController(imagePreviewViewController, animated: true)
}
В моем изображенииPreviewViewController.swift:
var capturedImage : UIImage?
@IBOutlet weak var capturedImageView: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
capturedImageView.image = capturedImage
// Do any additional setup after loading the view.
}
Ошибка Thread 1: EXC_BAD_ACCESS (code=1, address=0x596bbeb8)
возникает на capturedImageView.image = capturedImage
Может кто-нибудь указать мне правильное направление, где я мог ошибиться здесь?