2016-11-29 2 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

그것을 구현하려는 이유는 당신이 이해 바랍니다 -(void)AVAudioPlayerDidFinishPlaying:(AVAudioPlayer *)Player successfully:(BOOL)flag

그게 작동하도록 AVAudioPlayer 필요 내 문제, 나쁜 영어로 죄송합니다.

+0

이미 노래를 재생하는 것을 중지하려면 먼저 다른 노래를로드하기 전에 플레이어를 중지하여 시도해야합니다. – vaibhav

답변

1

절대로 당신의 UI를 차단합니다

NSData *soundData = [NSData dataWithContentsOfURL:url]; 

를 사용하지 않습니다.

데이터를 비동기 적으로 다운로드하려면 NSURLSession을 사용해야합니다.

+0

아 .. 내가 지금 해보겠습니다 –

+0

덕분에 많이 @Rajat –

+0

다행스럽게도 당신을 도왔습니다 :) – Rajat