AVAudioRecorder El método de grabación devuelve NO al azar @

Actualmente estoy desarrollando una aplicación que admite la grabación de audio en la aplicación. El usuario puede obtener una vista de tabla estándar de los archivos de audio guardados localmente que ya ha grabado a través de la aplicación, o presionar un botón para ir a una nueva vista de grabación, desde donde es posible grabar una nueva sesión de audio, que automáticamente obtendrá guardado en el sandbox de aplicaciones. Ahora esta función funciona bien la mayor parte del tiempo. Puedo grabar nuevos archivos y reproducirlos desde la aplicación, pero en momentos aleatorios la grabadora de audio no podrá iniciar una grabación con este método:

-(void) startRecording
{
if (!isRecording)
{
    isRecording = YES;

    BOOL recordingSucess = [audioRecorder record];

    if (recordingSucess)
        NSLog(@"WE STARTED THE RECORDING!");
    else
        NSLog(@"WE DID NOT START THE RECORDING!");

    // Start the timer
    recordTiming = [NSDate date];

    timeCheck = [NSTimer scheduledTimerWithTimeInterval:1.0f target:self selector:@selector(timeCheck) userInfo:nil repeats:YES]
}

Es decir, el NSLog imprimirá "No comenzamos la grabación", lo que indica que no pudo iniciar la grabación. Esto da como resultado un archivo de audio vacío que todavía se guarda en la aplicación con un tamaño de archivo constante de exactamente 4096 bytes. Así se inicializa el objeto grabador de audio:

-(id) initWithContentURL:(NSURL *)contentURL
{
self = [super init];

if (self)
{
    NSLog(@"Initializing audio recorder!");

    // Specific settings for the audio recording
    NSDictionary *recordSettings = [NSDictionary 
                                    dictionaryWithObjectsAndKeys:
                                    [NSNumber numberWithInt:AVAudioQualityMin],
                                    AVEncoderAudioQualityKey,
                                    [NSNumber numberWithInt:8], 
                                    AVEncoderBitRateKey,
                                    [NSNumber numberWithInt: 2], 
                                    AVNumberOfChannelsKey,
                                    [NSNumber numberWithFloat:22000.0], 
                                    AVSampleRateKey,
                                    nil];

    NSError *error = nil;

    audioRecorder = [[AVAudioRecorder alloc] initWithURL:contentURL settings:recordSettings error:&error];
    audioRecorder.delegate = self;
}

También NSLog comprueba qué comprobaciones para ver si el error es nulo o no, por lo que en este momento estoy seguro de que la inicialización no parece fallar. ¿Qué podría causar que el método de registro falle en momentos aparentemente aleatorios, mientras que funciona perfectamente en la mayoría de los otros momentos?

Respuestas a la pregunta(4)

Su respuesta a la pregunta