我是斯威夫特的新手。我正在尝试运行此代码但出现错误:
线程 1:EXC_BAD_ACCESS(代码=1,地址=0x48)
错误出现在这里:
self.player.play()
任何人都可以帮助解决这个问题吗?
导入 UIKit 导入 AVFoundationRun Code Online (Sandbox Code Playgroud)类视图控制器:UIViewController {
var player = AVAudioPlayer() override func viewDidLoad() { super.viewDidLoad() do { if let audioPath = Bundle.main.path(forResource: "music", ofType: "mp3") { try player = AVAudioPlayer(contentsOf: URL(fileURLWithPath: audioPath)) } } catch { print("ERROR") } self.player.play() }
你用你的代码做的是:
如果audioPath不正确,则播放器未正确创建:应用程序将使用没有有效数据的播放器,从而导致播放过程中崩溃。
您的代码可以编写为 player optional,这有助于防止崩溃:
import UIKit
import AVFoundation
class ViewController: UIViewController {
var player: AVAudioPlayer?
override func viewDidLoad() {
super.viewDidLoad()
player = initializePlayer()
player?.play()
}
private func initializePlayer() -> AVAudioPlayer? {
guard let path = Bundle.main.path(forResource: "music", ofType: "mp3") else {
return nil
}
return try? AVAudioPlayer(contentsOf: URL(fileURLWithPath: path))
}
}
Run Code Online (Sandbox Code Playgroud)
对代码执行的一些更改:
player现在是可选的:不需要初始化两次。另外,如果初始化顺利,您可以毫无问题地使用它,否则您的应用程序不会崩溃。play方法现在位于可选链中| 归档时间: |
|
| 查看次数: |
2835 次 |
| 最近记录: |