我的一个观点是UITableView
,它充当AVAudioPlayer
的委托,当您选择某个行并选择在完成播放后重复声音时,此表基本上会播放声音。
但是,我注意到如果我为某个声音选择一个重复播放的单元格然后滚动UITableView
以选择不同的声音,它将不会调用audioPlayerDidFinishPlaying
(因此不会重复)直到滚动停止后。一旦我停止滚动,它就会很好地重复。或者,如果我根本不滚动,它会重复正常。
在滚动期间UITableView
不再充当代理人并调用audioPlayerDidFinishPlaying
时会发生什么?有什么想法吗?
答案 0 :(得分:2)
即使文档没有明确说明,我怀疑audioPlayerDidFinishPlaying
调用是在主线程上推迟的(我的粗体句子):
AVAudioPlayer类让你玩 任何音频格式的声音 iPhone OS。你使用委托 处理中断(例如 来电)和更新 声音有的用户界面 玩完了。委托方法 对于AVAudioPlayer类来说 在AVAudioPlayerDelegate中描述 协议参考。
只要有一些要处理的事件,比如滚动事件,就会在主线程上等待调用。