为什么AVCam示例代码没有使用layerWithSession?

Why doesn't the AVCam sample code use layerWithSession?

我正在尝试弄清楚来自 Apple 的 Objective-C AVCam 示例代码,但我看不到它将捕获会话添加到预览层的确切位置。我们的代码使用 layerWithSession 接口创建了一个 AVCaptureVideoPreviewLayer 指针,但是如果我们在主线程上使用它会导致问题,因为它可能需要 10 秒以上才能完成。我在网上找到的其他一些示例代码也使用相同的界面。

但我在 AVCam 示例的 ObjC 代码中没有看到任何地方。它为 AVCamPreviewView 分配一个会话,但据我所知,它仅存储对象。还是实际上将会话分配给 UIView?

正是以下行确保 PreviewView 具有 AVCaptureVideoPreviewLayer。

+ (Class)layerClass
{
    return [AVCaptureVideoPreviewLayer class];
}

内部调用 layerClass() 以找出初始化时应附加到此 UIView 的图层。 setSession() 然后为此预览层设置会话。