我添加一个名为' 状态的观察员'进入 AVPlayerItem 。 发送观察者,然后在观察者未完成时将AVPlayerItem设置为nil
我在dealloc AVPlayerItem
时删除了观察者收到以下错误:
NSInternalInconsistencyException',原因:'实例0x7dc5e7d0 of 当键值观察者被释放时,类AVPlayerItem被释放 仍在注册。目前的观察信息: (上下文:0x0,属性:0x7b8ad140>
答案 0 :(得分:1)
我不相信AVPlayerItem
应该观察任何事情,如果没有具体的例子,很难说你的情况。通常情况下,您的控制器是来自AVPlayerItem
的某些通知的观察者。
例如:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(movieItemDidReachEnd:)
name:AVPlayerItemDidPlayToEndTimeNotification
object:nil];
然后当你完成时(即当你将AVPlayerItem设置为nil
时),你删除了观察者:
[[NSNotificationCenter defaultCenter] removeObserver:self name:AVPlayerItemDidPlayToEndTimeNotification object:nil];
如果您提供更多细节,也许我可以提供更多帮助。谢谢!
修改强>
在swift中它会......
NSNotificationCenter.defaultCenter().addObserver(self, selector: "movieDidReachEnd", name: AVPlayerItemDidPlayToEndTimeNotification, object: nil)
NSNotificationCenter.defaultCenter().removeObserver(self, name: AVPlayerItemDidPlayToEndTimeNotification, object: nil)
答案 1 :(得分:0)
在将playerItem设置为nil之前,请删除观察者:
playerItem.removeObserver(self, forKeyPath: "status")
如果你等到deinit / dealloc,在你已经将playerItem设置为nil后,你就不会再引用它来移除观察者。
答案 2 :(得分:0)
它通过异步
引起了avplayeritem的初始化