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