2016-11-29 133 views
0

我是iOS新手,自上午以來我一直在尋找解決此問題的解決方法,但未找到解決方案,我有超過6000個在線聲音文件,我想使用它AVAudioPlayer當用戶單擊該單元格,所以我實現它didSelectRowAtIndexPath: 這樣的:AVAudioPlayer播放新聲音時凍結UI

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"%@", [soundsArray objectAtIndex:(int)indexPath.row]]; 
    NSData *soundData = [NSData dataWithContentsOfURL:url]; 
    _audioPlayer = [[AVAudioPlayer alloc] initWithData:soundData error:NULL]; 
     [_audioPlayer play]; 
    } 

的問題是,每當我對任何行點擊,整個UI凍結,直到它需要加載完整的聲音時文件來自互聯網, 更大的文件,它需要更長的時間。

我試着用AVPlayer和它工作正常,但我需要AVAudioPlayer becouse似乎容易我 -(void)AVAudioPlayerDidFinishPlaying:(AVAudioPlayer *)Player successfully:(BOOL)flag

這就是工作,爲什麼我要與AVAudioPlayer

來實現它,我希望你明白我的問題, 對不起,我的英語不好。

+0

先停止已經播放的歌曲是很好的做法,您必須在加載另一首歌曲之前先停止播放器嘗試。 – vaibhav

回答

1

切勿使用

NSData *soundData = [NSData dataWithContentsOfURL:url]; 

這將阻止你的用戶界面。

您需要使用NSURLSession異步下載數據。

+0

ow ..我會現在嘗試 –

+0

非常感謝@Rajat –

+0

很高興它幫助你:) – Rajat

相關問題