La aplicación se bloquea silenciosamente durante la camera personalizada (Swift)

La aplicación se está estrellando en puntos aleatorios en esta function. Creo que tengo que networkingucirlo, pero no estoy seguro. Los únicos requisitos que tengo para la image es que sigue siendo un cuadrado y sigue siendo de tamaño decente porque necesito que sea lo suficientemente grande como para tomar el ancho de las pantallas completas.

Aquí hay un error que a veces viene junto con el crash:

Advertencia: no se pudo cargar ninguna información de class Objective-C. Esto networkingucirá significativamente la calidad de la información de tipo disponible.

@IBAction func didPressTakePhoto(sender: UIButton) { self.previewLayer?.connection.enabled = false if let videoConnection = stillImageOutput!.connectionWithMediaType(AVMediaTypeVideo) { videoConnection.videoOrientation = AVCaptureVideoOrientation.Portrait stillImageOutput?.captureStillImageAsynchronouslyFromConnection(videoConnection, completionHandler: {(sampleBuffer, error) in if (sampleBuffer != nil) { let imageData = AVCaptureStillImageOutput.jpegStillImageNSDataRepresentation(sampleBuffer) let dataProvider = CGDataProviderCreateWithCFData(imageData) let cgImageRef = CGImageCreateWithJPEGDataProvider(dataProvider, nil, true, CGColorRenderingIntent.RenderingIntentDefault) var image = UIImage() if UIDevice.currentDevice().orientation == .Portrait{ image = UIImage(CGImage: cgImageRef!, scale: 1.0, orientation: UIImageOrientation.Right) }else if UIDevice.currentDevice().orientation == .LandscapeLeft{ image = UIImage(CGImage: cgImageRef!, scale: 1.0, orientation: UIImageOrientation.Up) }else if UIDevice.currentDevice().orientation == .LandscapeRight{ image = UIImage(CGImage: cgImageRef!, scale: 1.0, orientation: UIImageOrientation.Down) } //Crop the image to a square let imageSize: CGSize = image.size let width: CGFloat = imageSize.width let height: CGFloat = imageSize.height if width != height { let newDimension: CGFloat = min(width, height) let widthOffset: CGFloat = (width - newDimension) / 2 let heightOffset: CGFloat = (height - newDimension) / 2 UIGraphicsBeginImageContextWithOptions(CGSizeMake(newDimension, newDimension), false, 0.0) image.drawAtPoint(CGPointMake(-widthOffset, -heightOffset), blendMode: .Copy, alpha: 1.0) image = UIGraphicsGetImageFromCurrentImageContext() let imageData: NSData = UIImageJPEGRepresentation(image, 0.1)! UIGraphicsEndImageContext() self.captImage = UIImage(data: imageData)! } } self.performSegueWithIdentifier("fromCustomCamera", sender: self) }) } } 

Este código se ejecuta en mi vista, DidAppear y stillImageOutput regresa cuando hago una foto.

 if self.isRunning == false{ captureSession = AVCaptureSession() captureSession!.sessionPreset = AVCaptureSessionPresetPhoto let backCamera = AVCaptureDevice.defaultDeviceWithMediaType(AVMediaTypeVideo) var error: NSError? do { input = try AVCaptureDeviceInput(device: backCamera) } catch let error1 as NSError { error = error1 print(error) input = nil } if error == nil && captureSession!.canAddInput(input) { captureSession!.addInput(input) stillImageOutput = AVCaptureStillImageOutput() stillImageOutput!.outputSettings = [AVVideoCodecKey: AVVideoCodecJPEG] if captureSession!.canAddOutput(stillImageOutput) { captureSession!.addOutput(stillImageOutput) previewLayer = AVCaptureVideoPreviewLayer(session: captureSession) previewLayer!.videoGravity = AVLayerVideoGravityResizeAspectFill previewLayer!.connection?.videoOrientation = AVCaptureVideoOrientation.Portrait previewView.layer.addSublayer(previewLayer!) captureSession!.startRunning() self.isRunning = true } } } 

Arreglado. La razón por la que se estaba estrellando era en realidad debido a que mis imágenes eran demasiado grandes. Tuve que comprimirlos.