我是iOS的新手,我从早上开始搜索修复此问题并且还没有找到解决方案,我在线有超过6000个声音文件我希望在用户使用AVAudioPlayer
时播放点击单元格,我在didSelectRowAtIndexPath:
中实现了它
像这样:
-(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];
}
问题是,每当我点击任何一行时,整个用户界面就会冻结,直到从互联网上加载完整的声音文件为止, 对于较大的文件,需要更长的时间。
我尝试使用AVPlayer
并且工作正常,但我需要AVAudioPlayer
因为我似乎很容易与之合作
-(void)AVAudioPlayerDidFinishPlaying:(AVAudioPlayer *)Player successfully:(BOOL)flag
这就是我想用AVAudioPlayer
我希望你理解我的问题, 抱歉我的英语不好。
答案 0 :(得分:1)
永远不要使用
NSData *soundData = [NSData dataWithContentsOfURL:url];
这将阻止你的用户界面。
您需要使用NSURLSession
异步下载数据。