Ошибка при использовании AVAudioRecorder - PullRequest
0 голосов
/ 27 октября 2011

Я делаю это приложение для записи голоса, но по какой-то причине оно не позволяет мне использовать этот метод удаления без сбоев:

-(void)deleteCurrentFiles {
    if(recorder != nil) {
        if([recorder isRecording]) {
            [recorder stop];
        }
        [recorder release];
        recorder = nil;
        [self performSelector:@selector(resetTotalTimeLabel) withObject:nil afterDelay:1.0];
    }

    if(player != nil) {
        if([player isPlaying]) {
            [player stop];
        }
        [player release];
        player = nil;
        currentTime = 0;
        timeSlider.value = 0;
        [self performSelector:@selector(resetCurrentTimeLabel) withObject:nil afterDelay:0.1];
    }

    if(commentRecorder != nil) {
        if([commentRecorder isRecording]) {
            [commentRecorder stop];
        }
    }
}

Объявления этих экземпляров:

AVAudioRecorder *recorder;
AVAudioRecorder *commentRecorder;
AVAudioPlayer *player;

В resetTotalTimeLabel и resetCurrentTimeLabel нет ссылки на / использование рекордеров / проигрывателя.

Я получаю ошибку:

-[__NSArrayI finishedRecording]: unrecognized selector sent to instance 0x1b3ba0
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSArrayI finishedRecording]: unrecognized selector sent to instance 0x1b3ba0'
*** Call stack at first throw:
(
    0   CoreFoundation                      0x35f08c7b __exceptionPreprocess + 114
    1   libobjc.A.dylib                     0x30186ee8 objc_exception_throw + 40
    2   CoreFoundation                      0x35f0a3e3 -[NSObject(NSObject) doesNotRecognizeSelector:] + 98
    3   CoreFoundation                      0x35eaf467 ___forwarding___ + 506
    4   CoreFoundation                      0x35eaf220 _CF_forwarding_prep_0 + 48
    5   CoreFoundation                      0x35ea3f79 -[NSObject(NSObject) performSelector:withObject:] + 24
    6   Foundation                          0x33fd3e6d __NSThreadPerformPerform + 272
    7   CoreFoundation                      0x35ebc8d1 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 14
    8   CoreFoundation                      0x35e8cecd __CFRunLoopDoSources0 + 384
    9   CoreFoundation                      0x35e8c6f9 __CFRunLoopRun + 264
    10  CoreFoundation                      0x35e8c50b CFRunLoopRunSpecific + 226
    11  CoreFoundation                      0x35e8c419 CFRunLoopRunInMode + 60
    12  GraphicsServices                    0x35261d24 GSEventRunModal + 196
    13  UIKit                               0x3386557c -[UIApplication _run] + 588
    14  UIKit                               0x33862558 UIApplicationMain + 972
    15  App Name                            0x00002959 main + 80
    16  App Name                            0x00002904 start + 40
)
terminate called after throwing an instance of 'NSException'

Похоже, что на самом деле это происходит с recorder после вызова этого метода .. Так что я должен добавить в этот метод, чтобы он работал?

Любые мысли очень ценятся!

1 Ответ

1 голос
/ 27 октября 2011

отправка сообщения объекту, который не отвечает на него в странный момент времени, является хорошим показателем дисбаланса счетчика ссылок.Запустите ваше приложение с включенными зомби в инструментах.воспроизведите аварию и посмотрите, не зомби ли это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...