Я делаю приложение для дошкольников с несколькими мини-играми.Один из них включает в себя поиск «что не так» на картинке.Например, если они нажимают на ребенка, играющего на улице, раздается звуковой сигнал, ребенок перемещается с улицы, и метка обновляется до «1/5 найденных ошибок».Если они найдут их все, они перейдут к новому контроллеру представления с новыми ошибками трафика.
Все работает просто отлично ... большую часть времени.Но время от времени приложение проигрывает музыку, а затем зависает.Я думаю, что это связано с фактическим воспроизведением звука (с AVAudioplayer), потому что, если я закомментирую это, он, кажется, будет работать каждый раз.
-(void)fantKnapp{
NSLog(@"fant en knapp");
int ant =[self.antall intValue];
ant++;
NSLog(@"antall %i",ant);
self.antall=[NSNumber numberWithInt:ant];
self.poeng.text=[NSString stringWithFormat: @"%i/5 funnet",ant];
if(ant==5){
NSLog(@"Du klarte alle!");
klartAlleView.hidden=NO;
spillIgjen.hidden=NO;
nestebrettKnapp.hidden=NO;
navtestAppDelegate *appDelegate=(navtestAppDelegate *)[[UIApplication sharedApplication] delegate];
[appDelegate spillLyd:@"du_klarte_alle"];
}
else{
navtestAppDelegate *appDelegate=(navtestAppDelegate *)[[UIApplication sharedApplication] delegate];
[appDelegate spillLyd:@"cling_1"];
}
}
Этот код находит «antall», текущее количество найденных ошибок (баллов).Если все ошибки были найдены, воспроизводится определенный звук (этот всегда работает).Если не другой звук играет.Это можно сделать, вызвав функцию в файле appdelegate.
-(void)spillLyd:(NSString*) filnavn{
NSString *audioFilePath=[[NSBundle mainBundle] pathForResource:filnavn ofType:@"aif"];
NSURL *audioFileURL=[NSURL fileURLWithPath:audioFilePath];
self.lydspiller=[[[AVAudioPlayer alloc] initWithContentsOfURL:audioFileURL error:nil] autorelease];
[self.lydspiller prepareToPlay];
[self.lydspiller play];
NSLog(@"spiller lyden");
}
Это прекрасно работает в 49/50 случаях, но время от времени - нет.Самое смешное, что звук воспроизводится, но приложение зависает, а ярлык не обновляется (self.poeng.text = ...).Но отображаются все комментарии NSLog, включая новое количество баллов.Я ожидал, что это произойдет до того, как будет воспроизведен звук ...
Это проблема с AVAudioplayer?У кого-нибудь есть подобный опыт?Кто-нибудь может мне помочь в этом?Я благодарен за любую помощь или предложения ...
(И извините за норвежца. Возможно, мне не легче помочь ...)