Ios 关闭视图时设备上的AVPlayer崩溃
我和AVPlayer有点问题。我尝试了很多解决方案,但在我换了一个不同的视角后,它仍然崩溃Ios 关闭视图时设备上的AVPlayer崩溃,ios,avplayer,iphone-6,swrevealviewcontroller,Ios,Avplayer,Iphone 6,Swrevealviewcontroller,我和AVPlayer有点问题。我尝试了很多解决方案,但在我换了一个不同的视角后,它仍然崩溃 class GuideVideo : BaseViewController{ var avPlayer: AVPlayer? var avPlayerLayer: AVPlayerLayer? override func viewDidLoad() { super.viewDidLoad() generateVideo() } func generateVideo () {
class GuideVideo : BaseViewController{
var avPlayer: AVPlayer?
var avPlayerLayer: AVPlayerLayer?
override func viewDidLoad() {
super.viewDidLoad()
generateVideo()
}
func generateVideo () {
let videoURLWithPath = data["VideoUrl"]
let videoFilePath = NSURL(string: videoURLWithPath!)
let avAsset: AVAsset = AVAsset.assetWithURL(videoFilePath) as! AVAsset
let avPlayerItem = AVPlayerItem(asset: avAsset)
avPlayer = AVPlayer(playerItem: avPlayerItem)
avPlayerLayer = AVPlayerLayer(player: avPlayer)
avPlayerLayer!.frame = self.videoView.bounds
self.videoView.layer.addSublayer(avPlayerLayer)
avPlayer!.play()
}
我还尝试从中删除观测者,因为我假设崩溃与一个零观测者有关
override func viewWillDisappear(animated: Bool) {
dispatch_async(dispatch_get_main_queue(),{
if self.avPlayerLayer != nil {
self.avPlayerLayer!.player.pause()
NSNotificationCenter.defaultCenter().removeObserver(self.avPlayerLayer!)
self.avPlayerLayer!.removeFromSuperlayer()
self.avPlayerLayer = nil
}
self.avPlayer!.pause()
self.avPlayer = AVPlayer()
})
super.viewWillDisappear(animated)
}
什么都不起作用,崩溃也不提供数据。要么它崩溃而不显示一条线,要么它崩溃而不显示一条总线
线程1:EXC\u错误访问
*需要注意的是,这种崩溃只发生在iPhone 6/6+上。我们的iphone5c在课堂上表现出色。
*我只是在移动到另一个视图控制器或不同的导航堆栈后,但在视图被取消几秒钟后,才发生崩溃
谢谢你,我已经坐了两天了
编辑:该问题显然与SWF有关。它在实例的生命周期结束之前释放实例。
接受了最佳解决方案,但问题与SWREVEL有关
视图将消失
已在主线程上调用。那么dispatch\u async(dispatch\u get\u main\u queue()
)的目的是什么呢?如果您不能以任何其他方式确定崩溃线,也许您可以在代码中插入大量日志(println
)因此,您可以确定崩溃发生前执行的最后一行是什么。当我使用断点查看应用程序崩溃的位置时,它停止崩溃,因此我想检查它是否与线程相关。查看您的断点导航器。您是否有异常断点?没有。我还尝试检查它崩溃的确切位置它在视图消失后崩溃。这就是我添加removeObserver的原因。