我正在开发一个Apache Cordova插件,它允许通过Media API从远程URL传输音频。
我遇到的问题是,每当我尝试访问EXC_BAD_ACCESS
实例上的某些属性时,我都会收到AVPlayer
信号。 currentTime
和isPlaying
是最严重的违规者。播放器将通过扬声器播放声音,但只要我的代码到达player.currentTime
或[player currentTime]
,它就会抛出错误的访问信号。
[player play];
double position = round([player duration] * 1000) / 1000;
[player currentTime]; //This will cause the signal
我正在使用ARC,因此我不会发布任何不应该发布的内容。
修改
我所做的一切都是在Cordova 3 CDVSound课上进行攻击,作为iOS实际流媒体概念的证明。
原始代码可在此处找到:https://github.com/apache/cordova-plugin-media/tree/master/src/ios
我的代码可以在这里找到:
方法startPlayingAudio
将在第346行触发exc_bad_access
。删除第346行将导致音频播放,但是当getCurrentPositionAudio
和player.currentItem.currentTime
行时,它会在以后的路上导致错误访问532被称为。
编辑/解决方案
事实证明,处理此问题的最佳方法是使用AVPlayerItem,然后使用AVPlayer
访问它。那么真正的问题就是,为什么{{1}}没有记录这种行为,为什么它会像这样?