Я планирую использовать несколько AVAudioPlayers для одновременного воспроизведения разных аудиофайлов. Они запускаются пользовательскими событиями. Я использую ARC в первый раз, и не так много документации о том, как ARC может применяться для настройки AVAudioPlayers (пример кода Apple - pre-ARC, как и большинство учебных пособий, которые я могу найти).
Приложение отлично работает с одним экземпляром AVAudioPlayer, но выдает SIGABRT при добавлении секунды. Я предполагаю, что это как-то связано с преждевременным выпуском экземпляров игрока ARC, но я не уверен, как это предотвратить.
Код выглядит следующим образом:
@interface LocationTracker : UIViewController <AVAudioPlayerDelegate> {
AVAudioPlayer *mainLoopPlayer;
AVAudioPlayer *sea1Player;
}
@property (strong, nonatomic) AVAudioPlayer *mainLoopPlayer;
@property (strong, nonatomic) AVAudioPlayer *sea1Player;
@end
реализация (в viewDidLoad):
NSURL *mainLoopURL = [[NSURL alloc] initFileURLWithPath: [[NSBundle mainBundle] pathForResource:@"wind" ofType:@"aiff"]];
self.mainLoopPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:mainLoopURL error:nil];
mainLoopPlayer.numberOfLoops = -1;
mainLoopPlayer.delegate = self;
[mainLoopPlayer prepareToPlay];
NSURL *sea1URL = [[NSURL alloc] initFileURLWithPath: [[NSBundle mainBundle] pathForResource:@"sea1" ofType:@"aiff"]];
self.sea1Player = [[AVAudioPlayer alloc] initWithContentsOfURL:sea1URL error:nil];
sea1Player.numberOfLoops = -1;
sea1Player.delegate = self;
[mainLoopPlayer prepareToPlay];
Любая помощь высоко ценится.