2017-03-24 8 views
0

AVAudioPlayerを使用して、バックグラウンドまたはメインスレッドでサウンドを再生する必要がありますか?バックグラウンドスレッドを使用してサウンドを再生してUIをブロックしない方が良いでしょうか?AVAudioPlayerを使用して、バックグラウンドまたはメインスレッドでサウンドを再生する必要がありますか?

+0

それはブロックされませんUIをします、それを:

これを実現するための最も簡単な方法は何をするのですか? – jokeman

+0

これは非同期コールの権利ですか?私はあなたがメインスレッドでそれを呼び出すことができると思います。 – jokeman

+0

何らかの理由でUIがブロックされることがあります.OrPlayを準備したり、再生を非同期にすることはできません。 – user1615898

答えて

3

あなたのサウンドを別のスレッドで再生すると、ブロックされている問題が解消されると思われます。

- (void)playingAudioOnSeparateThread: (NSString *) path 
{ 
    if(_audioPlayer) 
    { 
     _audioPlayer = nil; // doing this while a sound is playing might crash... 
    } 

    NSLog(@"start playing audio at path %@", path); 
    NSError *error = nil; 
    NSData *audioData = [NSData dataWithContentsOfFile:path]; 
    _audioPlayer = [[AVAudioPlayer alloc] initWithData:audioData error:&error]; 
    if (error == nil) 
    { 
     [_audioPlayer play];  
    } 
} 

- (void)playAudio:(NSString *)path 
{ 
    [NSThread detachNewThreadSelector: @selector(playingAudioOnSeparateThread:) toTarget: self withObject: path]; 
} 
関連する問題