requestAccessForMediaType não pede permissão

Percebi que meu aplicativo não solicita permissão para usar a câmera. Após algumas experiências, descobri que o código usado para verificar a permissão leva muito tempo para ser concluído. Então, pensei em deixar essa parte do meu viewdidload ser executada em uma fila serial (sincronização). Forçando o resto a aguardar a conclusão do processo de autenticação antes de iniciar a próxima linha. Mas isso realmente não funciona. As linhas começam em ordem, mas ainda não terminam em ordem.

O estranho é que, se eu pedir a permissão e não fizer nada com ela, sem o completeHandler (como o código abaixo), ele executará a segunda vez que eu o executar com o completeHandler perfeitamente, embora ainda não mostre um alerta para o usuário. Pode ser porque a gravação de vídeo não precisa de permissão na Europa?avcapturedevice ref

Se eu quiser que o código seja executado linha por linha, preciso usar barreiras? ou sincronizar fila de série ou?

AVCaptureDevice.requestAccessForMediaType(AVMediaTypeVideo, completionHandler: { nil }())

Atualizar:

Este método deve ser bastante seguro, mas não é. Retorna true por garantido, mas 3 para o rawValue (negado)

func checkForAuthorizationStatus() {
        println("auth me")
        AVCaptureDevice.requestAccessForMediaType(AVMediaTypeVideo, completionHandler: {
            granted in
            if granted {
                println("granted: \(granted)")
                self.deviceAuthorized = true
                println("raw value: \(AVCaptureDevice.authorizationStatusForMediaType(AVMediaTypeVideo).rawValue)")
            } else {
                self.deviceAuthorized = false
            }

        })
    }

Atualização 2: responda nos comentários abaixo. - Redefina as configurações de privacidade do dispositivo para obter a solicitação.

rawValue para autorizado é 3 e não 4

questionAnswers(1)

yourAnswerToTheQuestion