我遇到了AVPlayer的问题。我已经尝试了很多解决方案但是在我转向不同的视图后它仍然崩溃。
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_BAD_ACCESS *需要注意的是,这次崩溃只发生在iPhone 6/6 +上。我们的iPhone 5C很好地处理了这个课程。 *我只是在移动到另一个视图控制器或不同的导航堆栈后才崩溃,但在视图被解除后几秒钟。
谢谢你,在2天的大部分时间里一直坐在这上面。
编辑:这个问题显然与SWReveal有关。它在生命周期结束之前释放实例。 接受最佳解决方案,但问题与SWReveal有关。
答案 0 :(得分:0)