Я использую ту же логику, и она работает, поэтому что-то еще должно быть неверным.
РЕДАКТИРОВАТЬ: Пример
- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag
{
if (flag == NO)
NSLog(@"Playback finished unsuccessfully");
[player setCurrentTime:0.0];
[backgroundMusicPlayer release];
backgroundMusicPlayer = nil;
if (![music isEqualToString:@"10"]) {
[self playMusicWithKey:[NSString stringWithFormat:@"%i", ([music intValue] + 1)] timesToRepeat:0];
}
}
где
- (void) playMusicWithKey:(NSString*)theMusicKey timesToRepeat:(NSUInteger)theTimesToRepeat {
NSError *error;
NSString *path = [musicLibrary objectForKey:theMusicKey];
// Initialize the AVAudioPlayer
if (backgroundMusicPlayer == nil) {
backgroundMusicPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:&error];
[backgroundMusicPlayer setDelegate: self];
[backgroundMusicPlayer setVolume:backgroundMusicVolume];
musicLenght = backgroundMusicPlayer.duration;
}
// If the backgroundMusicPlayer object is nil then there was an error
if(!backgroundMusicPlayer) {
NSLog(@"ERROR SoundManager: Could not play music for key '%@'", theMusicKey);
return;
}
// Set the number of times this music should repeat. -1 means never stop until its asked to stop
[backgroundMusicPlayer setNumberOfLoops:theTimesToRepeat];
// Play the music
[backgroundMusicPlayer prepareToPlay];
[backgroundMusicPlayer play];
}