【发布时间】:2019-03-12 14:19:21
【问题描述】:
我在 XCODE 上使用 swift。我遇到了这个问题,如果我想点击我的按钮来播放我的声音。它会崩溃。我有视图控制器。第一个视图控制器连接到一个情节提要。那个故事板有一个按钮播放声音。当我运行它时,声音会播放。当它去第二个故事板播放声音时它崩溃了
[2张图片是我用来播放音频的代码。我在第一个视图控制器上粘贴了相同的代码。] 这是第二个视图控制器上的内容。当我按下第二个故事板上的按钮时,我得到 Thread 1: EXC_BAD_ACCESS (code=1, address=0x48) 但在我按下的第一个按钮上没有出现此错误。
当我运行模拟器并到达第二个视图控制器时会发生这种情况
class Level1ViewController: UIViewController, AVAudioPlayerDelegate {
var player: AVAudioPlayer = AVAudioPlayer()
var correctPlayer: AVAudioPlayer = AVAudioPlayer()
var wrongPlayer: AVAudioPlayer = AVAudioPlayer()
@IBAction func correctAnswer(_ sender: Any) {
correctPlayer.play()
}
@IBAction func playOne(_ sender: Any) {
player.play()
}
@IBOutlet weak var option2: UIButton! // wrong answer
@IBAction func wrongAnswer1LV(_ sender: Any) {
}
@IBOutlet weak var option1: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
//View Controller 1 - Working
do {
let audioPlayer = Bundle.main.path (forResource: "bark", ofType: "wav")
try player = AVAudioPlayer(contentsOf: NSURL(fileURLWithPath: audioPlayer!)as URL)
}
catch {
//ERROR!
}
do {
let audioPlayer2 = Bundle.main.path (forResource: "Ding-Sound-Effect_qZC5gtOw3DU", ofType: "mp3")
try correctPlayer = AVAudioPlayer(contentsOf: NSURL(fileURLWithPath: audioPlayer2!)as URL)
}
catch {
//ERROR!
}
View Controller 2 - 不工作(报错)
class Level2LevelViewController: UIViewController, AVAudioPlayerDelegate {
var player: AVAudioPlayer = AVAudioPlayer()
var correctPlayer: AVAudioPlayer = AVAudioPlayer()
var wrongPlayer: AVAudioPlayer = AVAudioPlayer()
@IBAction func levelTwoPLay(_ sender: Any) {
correctPlayer.play() **** THREAD 1: EXC_BAD_ACESS****
}
override func viewDidLoad() {
super.viewDidLoad()
do {
let audioPlayerII = Bundle.main.path (forResource: "Door Open and Close Slam Sound Effects", ofType:"mp3")
try player = AVAudioPlayer(contentsOf: NSURL(fileURLWithPath: audioPlayerII!)as URL)
}
catch {
//ERROR!!
}
leveltwoOp1.backgroundColor = UIColor.black
leveltwoOp2.backgroundColor = UIColor.black
leveltwoOpTh.backgroundColor = UIColor.black
leveltwoOp4.backgroundColor = UIColor.black
【问题讨论】:
-
欢迎来到 Stack Overflow。请使用tour 并查看How to Ask。
-
请将代码发布为文本而不是图像(您可以通过评论轻松指出错误)
-
ㅠㅠ 네, 감사합니다。是的,谢谢。我现在就为你做这个
-
问题在于,在第二个视图控制器中,您从未将
correctPlayer设置为真正的玩家。