私はピアノのアプリケーションを持っています。少しの誤差はありますが、問題なく動作しています。同時に複数のキーを非常に速く弾くと、サウンドが数秒間消え、コンソールに次のメッセージが表示されます
Mediaserverd を強制終了する AudioQueueStart メッセージの投稿
関連するコードは次のとおりです。
-(IBAction)playNoteFromKeyTouch:(id) sender{
[NSThread detachNewThreadSelector:@selector(playNote:) toTarget:self withObject:[NSString stringWithFormat:@"Piano.mf.%@",[sender currentTitle]]];
}
-(void)playNote:(NSString *) note{
NSError *err;
NSString *path = [[NSBundle mainBundle] pathForResource:note ofType:@"aiff"];
AVAudioPlayer *p = [[AVAudioPlayer alloc ] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:&err];
p.delegate = self;
if (err) {
NSLog(@"%@", err);
}else{
[p prepareToPlay];
[p play];
}
}
- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag
{
[player release];
}
Instrumentsでテストしましたが、メモリリークはありません。誰かがこのエラーを回避するためのアイデアを持っているなら、それはありがたいです.