2015-07-27 1 views
1

Я получаю вышеуказанную ошибку. Может кто-нибудь, пожалуйста, объясните мне, что это значит и как это исправить? Мой код ниже:AVCaptureStillImageOutput captureStillImageAsynchronouslyFromConnection: завершено неактивное/недействительное соединениеHandler?

UIButton *btn = (UIButton *)sender; 
__weak UIButton *weakBtn = btn; 
btn.enabled = NO; 
    AVCaptureConnection *videoConnection = nil; 
    for (AVCaptureConnection *connection in self.stillImageOutput.connections) { 
     for (AVCaptureInputPort *port in [connection inputPorts]) { 
      if ([[port mediaType] isEqual:AVMediaTypeVideo]) { 
       videoConnection = connection; 
       break; 
      } 
     } 
     if (videoConnection) { 
      break; 
     } 
    } 

    [self.stillImageOutput captureStillImageAsynchronouslyFromConnection:videoConnection completionHandler:^(CMSampleBufferRef imageSampleBuffer, NSError *error) { 


     NSData *imageData = [AVCaptureStillImageOutput jpegStillImageNSDataRepresentation:imageSampleBuffer]; 
     UIImage *image = [[UIImage alloc] initWithData:imageData]; 

     [self pushImagePreviewVCWithImage:image]; 
      // UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil); 
     weakBtn.enabled = YES; 

согласно crashlytics она разбивающихся на если (videoConnection) {перерыва; }

Я пытаюсь найти решение где угодно. Я также нашел учебник с таким же сбоем, но он не был исправлен. http://www.musicalgeometry.com/?p=1297

спасибо!

это ошибка:

0 CoreFoundation     0x00000001838602d8 __exceptionPreprocess 
1 libobjc.A.dylib    0x000000019552c0e4 objc_exception_throw 
2 AVFoundation     0x00000001820c17a4 -[AVCaptureStillImageOutput captureStillImageAsynchronouslyFromConnection:completionHandler:] 
3 First Derm      0x000000010011fff4 -[CameraOverlayVC captureNow:] (CameraOverlayVC.m:124) 
4 UIKit       0x000000018830d398 -[UIApplication sendAction:to:from:forEvent:] 
5 UIKit       0x00000001882f6474 -[UIControl _sendActionsForEvents:withEvent:] 
6 UIKit       0x000000018830cd34 -[UIControl touchesEnded:withEvent:] 
7 UIKit       0x000000018830c9c0 -[UIWindow _sendTouchesForEvent:] 
8 UIKit       0x0000000188305efc -[UIWindow sendEvent:] 
9 UIKit       0x00000001882d9120 -[UIApplication sendEvent:] 
10 UIKit       0x000000018857a2b8 _UIApplicationHandleEventFromQueueEvent 
11 UIKit       0x00000001882d7634 _UIApplicationHandleEventQueue 
12 CoreFoundation     0x0000000183818240 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ 
13 CoreFoundation     0x00000001838174e4 __CFRunLoopDoSources0 
14 CoreFoundation     0x0000000183815594 __CFRunLoopRun 
15 CoreFoundation     0x00000001837412d4 CFRunLoopRunSpecific 
16 GraphicsServices    0x000000018d1976fc GSEventRunModal 
17 UIKit       0x000000018833ef40 UIApplicationMain 
18 First Derm      0x00000001000cbed8 main (main.m:14) 
19 libdyld.dylib     0x0000000195bd6a08 start 
+0

Вы можете оставить фактический журнал ошибок/ошибок? – 0yeoj

+0

@ 0yeoj i отредактировал выше –

+0

Рамки ImageIO, CoreMedia и CoreVideo все в вашем проекте? Я думаю, вы пропустили какую-то настройку на 'self.stillImageOutput' – 0yeoj

ответ

1

Это, как я в моем проекте, и он работает хорошо.

  1. определить пользовательский последовательные очереди, чтобы справиться с этим в фоновом режиме

  2. Кво шаблона для наблюдения значения.

вы можете ссылаться на мой класс образца: https://github.com/htaiwan/CameraSnapShot