Почему пример кода AVCam не использует layerWithSession?

Я пытаюсь разгадать пример кода Objective-C AVCam от Apple, но я не вижу, где именно он добавляет сеанс захвата в слой предварительного просмотра. Наш код создает указатель AVCaptureVideoPreviewLayer, используя интерфейс layerWithSession, но это вызывает проблему, если мы используем его в основном потоке, поскольку его завершение может занять более 10 секунд. И тот небольшой пример кода, который я нашел в Интернете, использует тот же интерфейс.

Но я не вижу этого нигде в коде ObjC для примера AVCam. Он назначает сеанс AVCamPreviewView, но, насколько я могу судить, он просто сохраняет объект. Или это фактически назначает сеанс UIView?


person Jonathan    schedule 31.05.2018    source источник


Ответы (1)


Это следующая строка, которая гарантирует, что PreviewView имеет AVCaptureVideoPreviewLayer.

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

LayerClass() вызывается внутри, чтобы узнать, какой слой должен быть присоединен к этому UIView при его инициализации. Затем setSession() устанавливает сеанс для этого слоя предварительного просмотра.

person adamfowlerphoto    schedule 01.06.2018