2012-08-14 2 views
0

Позвольте мне вначале сказать, что я являюсь новичком цели-c, и я собираю существующую кодовую базу, поэтому я пытаюсь лихорадочно читать о NSRunLoop и т. Д. Мне бы очень понравилась дополнительная помощь.QTCaptureSession: startRunning блокирует поток

В принципе, я унаследовал код, который выглядит следующим образом:

[[NSRunLoop mainRunLoop] runUntilDate:[NSDate distantFuture]]; 
[_captureSession startRunning]; 
return [NSNumber numberWithInt:0]; 

в функции, которая, как предполагается, чтобы вернуться, но вместо этого блоки навсегда на startRunning. Мне нужно это, чтобы вернуться, и я не уверен, почему он блокирует. Еще один код, разбросанный по этому вопросу, может быть полезен:

_captureDecompressedVideoOutput = [[QTCaptureDecompressedVideoOutput alloc] 
            init]; 
[_captureDecompressedVideoOutput setDelegate:self]; 
[_captureDecompressedVideoOutput performSelectorOnMainThread:@selector(setPixelBufferAttributes:) withObject:captureDictionary waitUntilDone:NO]; 

любая идея, что происходит?

ответ

0

хорошо, я застрял [_captureSession startRunning] в отдельную функцию, а затем заменить вызов с

self performSelectorInBackground:@selector(backgroundCapture) withObject:nil]; 

поэтому побежал в потоке. блокировка не только не мешала возврату метода (поскольку она была в отдельном потоке), но и вызов даже не блокировал теперь, когда он работал на своем потоке. Bizarre.

+0

Я видел некоторое подобное странное поведение, используя сеанс QTCapture на OSX 10.8 с использованием XCode 4.5. Я нашел [это пример командной строки приложения], который работает нормально, но только если он запускается с использованием [NSThread start] ... Я только начал с использования AVCaptureSession (который, как я знал, был доступен на iOS, но только недавно реализованный также доступен на Mac), что было гораздо проще. (Единственная ошибка, с которой я столкнулся, заключалась в том, что вы должны сказать «setWantsLayer» и «setLayer», чтобы дать возможность CALayer использовать с AVCaptureVideoPreviewLayer.) Я также считаю, что AVCaptueSession предполагается вытеснять QTCaptureSession ... – bellkev

 Смежные вопросы

  • Нет связанных вопросов^_^