AVPlayer和AVPlayerItem在使用完毕后需要进行释放,以避免内存泄漏问题。下面是一个示例代码,演示了如何正确释放AVPlayer和AVPlayerItem。
import AVFoundation
class PlayerViewController: UIViewController {
var player: AVPlayer?
var playerItem: AVPlayerItem?
override func viewDidLoad() {
super.viewDidLoad()
guard let videoURL = URL(string: "https://example.com/video.mp4") else {
return
}
playerItem = AVPlayerItem(url: videoURL)
player = AVPlayer(playerItem: playerItem)
let playerLayer = AVPlayerLayer(player: player)
playerLayer.frame = view.bounds
view.layer.addSublayer(playerLayer)
player?.play()
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
player?.pause()
player = nil
playerItem?.removeObserver(self, forKeyPath: "status")
playerItem = nil
}
}
在上面的示例中,AVPlayer和AVPlayerItem的释放是在视图控制器的viewWillDisappear
方法中进行的。首先,调用player?.pause()
来暂停播放,并将player设置为nil来释放其内存。然后,调用playerItem?.removeObserver(_:forKeyPath:)
方法来移除观察者,最后将playerItem设置为nil来释放其内存。
请注意,上述示例中的URL仅用作演示目的,实际使用时需要替换为有效的视频URL。