stackoverflow.com/questions/31457302/...

лал приложение с функцией захвата и сохранения видео. Я использовал AVFoundation для этого иApple AVCam был моим гидом

Я надеюсь, что смогу прояснить это:
Все работает нормально, пока я не выпущу videoViewController, который впервые обрабатывает AVCamCaptureManager (в AVCam это будет AVCamViewController). После этого при повторном создании видео зависает сразу после переключения камеры. Даже повторный запуск не поможет, ни не очистит, ни перезагрузит устройство. (Иногда что-то помогает, но это не правило).

Я выпускаю videoViewController, когда не нужно экономить память.

Код для переключения камеры в основном такой же, как в AVCam:

NSError *error;
AVCaptureDeviceInput *newVideoInput;
AVCaptureDevicePosition position = currentVideoInput.device.position;

if (position == AVCaptureDevicePositionBack)
    newVideoInput = [[AVCaptureDeviceInput alloc] initWithDevice:frontFacingCamera error:&error];
else if (position == AVCaptureDevicePositionFront)
    newVideoInput = [[AVCaptureDeviceInput alloc] initWithDevice:backFacingCamera error:&error];

if (newVideoInput != nil) {
    [session beginConfiguration];
    [session removeInput:currentVideoInput];
    if ([session canAddInput:newVideoInput]) {
        [session addInput:newVideoInput];
        [self setVideoInput:newVideoInput];
} else {
    [session addInput:currentVideoInput];
}
    [session commitConfiguration];
    [newVideoInput release];
} else if (error) {
    NSLog(@"%@",[error localizedDescription]);
}

Код, с которым я отклоняю videoView

[self.videoViewController.view removeFromSuperview];
self.videoViewController = nil;

Мой нынешний «обходной путь» - просто оставить все как есть, даже если он мне не нужен.

Может кто-нибудь объяснить, почему это происходит и как это решить.

РЕДАКТИРОВАТЬ: Решено
Как отметил W Dyson в своем ответе, я должен был прекратить сеанс перед выпуском моего videoViewController следующим образом:

[[[self.videoViewController captureManager] session] stopRunning];
[self.videoViewController.view removeFromSuperview];
self.videoViewController = nil;

Спасибо Дайсон.

Ответы на вопрос(2)

Ваш ответ на вопрос