我有一个简单的UIView孩子,我很困惑为什么我收到此错误(导致应用程序崩溃):
[VideoView observeValueForKeyPath:ofObject:change:context:]: message sent to deallocated instance 0x13009b670
以下是VideoView
类:
@implementation VideoView
- (id)init {
self = [super init];
if (self) {
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(stopVideo)
name:UIApplicationDidEnterBackgroundNotification
object:nil];
}
return self;
}
- (void)dealloc {
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
//.. stopVideo method
@end
我的dealloc
是否确保永远不会将通知发送到已解除分配的实例?我怎么能防止这种情况发生?
iOS 9,启用了ARC
答案 0 :(得分:2)
你正在混淆。该错误不是由NSNotificationCenter
通知引起的。代码中的某处使用key-value observing并且在释放对象时不会删除该观察者,这就是发生崩溃的原因。