AVAudioPlayer EXC_BAD_ACCESS
Posted
技术标签:
【中文标题】AVAudioPlayer EXC_BAD_ACCESS【英文标题】: 【发布时间】:2011-10-06 04:58:11 【问题描述】:如果AVAudioPlayer
当前正在播放,我正在尝试暂停它。当我调试我的代码并检查AVAudioPlayer
时,我看到它已分配。当我尝试访问其上的方法/属性(即myAudioPlayer isPlaying
)时,我收到EXC_BAD_ACCESS
错误。如果AVAudioPlayer
没有加载声音,就会发生这种情况。有没有办法检查它是否加载了声音?我尝试访问myAudioPlayer.data
,但仍然遇到同样的错误。
【问题讨论】:
你能贴一些代码吗?我的猜测是您在初始化之前正在访问 AVAudioPlayer。 尝试检查是否初始化正确reddit.com/r/swift/comments/2whoaz/… 【参考方案1】:对我来说,这是因为我没有调用指定的初始化程序之一。我用AVAudioPlayer()
实例化它,而不是指定的初始化器public init(contentsOfURL url: NSURL) throws
和public init(data: NSData) throws
【讨论】:
【参考方案2】:从 ios 13 开始,请确保在使用 AVAudioPlayer(contentsOf: URL(...)) 分配之前删除 AVAudioPlayer 上的初始化
即改变
var audioPlayer = AudioPlayer()
到 var audioPlayer: AVAudioPlayer!
【讨论】:
拍得好,这才是真正的问题,使用前的空初始化.. 这就是iOS13!您是如何发现 Reid 解决方案的?【参考方案3】:我猜你必须使用prepareToPlay 方法来查看它是否已加载。
【讨论】:
【参考方案4】:首先你必须添加 AVFoundation 框架。然后,在 .h 文件中导入 AVFoundation 框架。
.h:
AVAudioPlayer *audioPlayer;
.m:
NSURL *url1 = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/audio1.mp3", [[NSBundle mainBundle] resourcePath]]];
NSError *error;
audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url1 error:&error];
//audioPlayer.numberOfLoops = 0;
[audioPlayer play];
试试这个代码,它可能对你有帮助..
【讨论】:
以上是关于AVAudioPlayer EXC_BAD_ACCESS的主要内容,如果未能解决你的问题,请参考以下文章