AVAudioPlayer... играет старый

m создание приложения, которое требует воспроизведения записанных аудиофайлов. Для этого у меня есть файл sound.h/.m и файл settings.h/.m. В звуке у меня есть метод - обновить проигрыватель, который обновит мой аудиоплеер, если были созданы новые записанные файлы.

-(AVAudioPlayer *)updatePlayer
{
  if (!mAudioPlayer) 
  {
    self.mAudioPlayer = [[[AVAudioPlayer alloc]initWithContentsOfURL:mURLObj error:nil]autorelease];
  }
    return mAudioPlayer;
}

Теперь я вызываю этот метод каждый раз, когда новый записанный аудиофайл создается в контроллере настроек.. следующим образом..

-(void)hasNewRecorded:(BOOL)inFlag
{
    if (inFlag == YES)
    {
        mRecorder.mAudioPlayer = [[mRecorder updatePlayer]retain];
    }
    [mRecorder.mAudioPlayer release];
}

Я знаю, что где-то делаю что-то не так... Но не смог решить проблему за последние 2 дня. Я с нетерпением жду вашей помощи.


person iCoder4777    schedule 06.09.2011    source источник


Ответы (1)


Вы запускаете новый аудиоплеер, только если его здесь нет,

if (!mAudioPlayer) 
  {
    self.mAudioPlayer = [[[AVAudioPlayer alloc]initWithContentsOfURL:mURLObj error:nil]autorelease];
  }

Новый игрок не будет назначен, так как игрок уже существует. Таким образом, старый аудиофайл будет продолжать воспроизводиться. Попробуйте исправить точку останова внутри этого цикла for и проверьте, если проблема в этом, измените условие - освободите старый аудиоплеер и выделите новый.

person sElanthiraiyan    schedule 06.09.2011
comment
Да, это я знаю, но всякий раз, когда я пытаюсь выпустить старый, ни один плеер не играет. Почему так... прежде чем выделять это, я делаю это нулевым как... self.mAudioPlayer = nil if (!mAudioPlayer) { self.mAudioPlayer = [[[AVAudioPlayer alloc]initWithContentsOfURL:mURLObj error:nil]autorelease]; } Это неправильный путь?? - person iCoder4777; 06.09.2011
comment
Да это так. Вы делаете это значение равным нулю и проверяете, является ли оно нулевым для выполнения условного кода, который, очевидно, не будет выполнен. Вы видите здесь проблему? - person sElanthiraiyan; 16.09.2011