3

我们的应用程序AVCaptureSession用于 qr/条码扫描。在 iOS 8 中有一个简单的关闭按钮变得无响应。

看起来输出缓冲区正在使主 UI 线程超载。

看起来当前输出在主线程上:

[captureOutput setSampleBufferDelegate:self queue:dispatch_get_main_queue()];

我应该在一个单独的线程上运行这一切吗?当前在后台线程上运行的尝试失败。

4

1 回答 1

0

我也有类似的困难。我发现 UI 线程因我在示例缓冲区委托的 captureOutput(AVCaptureOutput, CMSampleBuffer, AVCaptureConnection) 方法中所做的工作而负担过重。我将这项工作从主线程中移开,瞧!一切都好。

用 DispatchQueue.global() 代替 DispatchQueue.main 就可以了。

于 2020-06-19T12:35:56.740 回答