如何确保我的 AVCaptureSession 有足够的时间 运行?

How can I ensure that my AVCaptureSession has enough time to run?

我需要确保我的 AVCaptureSession 运行s 在停止之前持续 15 秒。我该怎么做呢?我对使用 waitsleep 犹豫不决,因为我很确定它会停止输入。在我 运行 停止命令之前,我可以用什么来等待 15 秒?

示例代码:

[self.session startRunning];
// wait 15 seconds 
[self.session stopRunning]; 

睡眠确实会让一切戛然而止。不要那样做。

您可以调用 dispatch_after:

[self.session startRunning];
// wait 15 seconds 
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 
  15 * NSEC_PER_SEC), 
  dispatch_get_main_queue(), ^{
    [self.session stopRunning]; 
});

另一种方法是设置 CADisplayLink 并测试每次调用是否经过 15 秒,但除非您需要毫秒精度,否则上述方法应该没问题。