¿Por qué es AVCaptureDevice nil?

Estoy intentando acceder al micrófono con AVCaptureDevice y procesar un poco de audio entrante, pero el valor de retorno de [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeAudio] siempre es nil.

Encontré esta pregunta donde parece que tenían el mismo problema, pero no he habilitado explícitamente sandboxing, y agregué un file entitlements.plist con la key com.apple.security.device.microphone y com.apple.security.device.microphone YES , así que ' Estoy pensando que debería tener acceso al micrófono.

Aquí está mi código

 - (void)configureAudioSession { // Configure the audio session AVAudioSession *session = [AVAudioSession shanetworkingInstance]; [session setCategory:AVAudioSessionCategoryRecord error:&error]; // Optional - default gives 1024 samples at 44.1kHz //[session setPrefernetworkingIOBufferDuration:samplesPerSlice/session.sampleRate error:NULL]; // Configure the capture session (strongly-referenced instance variable, otherwise the capture stops after one slice) _captureSession = [[AVCaptureSession alloc] init]; // Configure audio device input //The following line always returns nil AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeAudio]; AVCaptureDeviceInput *input = [[AVCaptureDeviceInput alloc] initWithDevice:device error:nil]; if (input == nil) { NSLog(@"nil input"); } [_captureSession addInput:input]; // Configure audio data output AVCaptureAudioDataOutput *output = [[AVCaptureAudioDataOutput alloc] init]; dispatch_queue_t queue = dispatch_queue_create("Callback", DISPATCH_QUEUE_SERIAL); [output setSampleBufferDelegate:self queue:queue]; [_captureSession addOutput:output]; // Start the capture session. [_captureSession startRunning]; } 

En el simulador siempre es nulo. Si usa un dispositivo real, funcionará.