Поскольку вы не определяете локальную переменную с именем player
, я предполагаю, что player
- это переменная экземпляра, которая использовалась для воспроизведения первой песни, и вы создали ее с помощью
player = [[AVAudioPlayer alloc] initWithContentsOfURL:firstSongURL error:&error];
или что-то подобное, и вы установили делегата. В вашем audioPlayerDidFinishPlaying: successfully:
методе у вас есть
[player initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];
, что означает, что вы снова отправляете -initWithContentsOfURL:error:
в тот же экземпляр. Не вызывайте инициализатор дважды для данного объекта. Результаты непредсказуемы, и существует вероятность утечки памяти. Вы должны выпустить предыдущий экземпляр AVAudioPlayer, например
[player release];
, а затем снова создайте новый экземпляр с +alloc
и -initWithContentsOfURL:error:
, как вы сделали с первой песней, и установите соответствующий делегат:
player = [[AVAudioPlayer alloc] initWithContentsOfURL:secondSongURL error:&error];
player.delegate = self;
[player play];