QTCaptureSession:startRunning 是阻塞线程



首先让我说我是一个完全的objective-c新手,我正在学习现有的代码库,所以我试图疯狂地阅读NSRunLoop等,但我希望得到一些额外的帮助。

基本上,我继承了如下所示的代码:

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

在一个应该返回的函数中,而是在 startRun 上永久阻塞。 我需要这个返回,我不确定为什么它会阻塞。 分散在上面的更多代码可能会有所帮助:

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

知道发生了什么吗?

好吧,我将[_captureSession startRunning]放在一个单独的函数中,然后将调用替换为

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

所以它在一个线程中运行。 阻塞不仅不会干扰方法返回(因为它在单独的线程上),而且调用现在甚至没有阻塞,因为它正在自己的线程上运行。 奇怪。

相关内容

  • 没有找到相关文章

最新更新