下面例子可以解决音频相覆盖的问题,
主要是使用NSOperationQueue,
- (void)viewDidLoad
{
[super viewDidLoad];
NSData *sound1 = [NSData dataWithContentsOfFile:[[[NSBundle mainBundle] bundlePath] stringByAppendingPathComponent:@"01.mp3"]];
NSData *sound2 = [NSData dataWithContentsOfFile:[[[NSBundle mainBundle] bundlePath] stringByAppendingPathComponent:@"07.mp3"]];
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
NSError *error = nil;
AVAudioPlayer *player1 = [[AVAudioPlayer alloc] initWithData:sound1 error:&error];
AVAudioPlayer *player2 = [[AVAudioPlayer alloc] initWithData:sound2 error:&error];
NSInvocationOperation *op1 = [[[NSInvocationOperation alloc] initWithTarget:self selector:@selector(playSounds:) object:player1] autorelease];
NSInvocationOperation *op2 = [[[NSInvocationOperation alloc] initWithTarget:self selector:@selector(playSounds:) object:player2] autorelease];
[queue addOperation:op1];
[queue addOperation:op2];
}
- (void)playSounds:(id)data
{
AVAudioPlayer *player = (AVAudioPlayer *)data;
[player prepareToPlay];
[player play];
}