Iphone objective-c中的nskvopendingnotification错误
我有以下问题 在抽象过程中我在objective c中封装了一个类,该类允许我更改基础图像上矩形的大小和位置。 我使用这个类,因为在某些情况下每个都略有不同。 在一个例子中,我需要确保最小和最大尺寸,在另一个例子中,矩形必须是正方形。 因此,我观察用户设置的值,并使用objective-c方法根据规则进行检查:Iphone objective-c中的nskvopendingnotification错误,iphone,ios,objective-c,Iphone,Ios,Objective C,我有以下问题 在抽象过程中我在objective c中封装了一个类,该类允许我更改基础图像上矩形的大小和位置。 我使用这个类,因为在某些情况下每个都略有不同。 在一个例子中,我需要确保最小和最大尺寸,在另一个例子中,矩形必须是正方形。 因此,我观察用户设置的值,并使用objective-c方法根据规则进行检查: [rectDrawer addObserver:self forKeyPath:@"value" options:NSKeyValueObservingOptionNew context
[rectDrawer addObserver:self forKeyPath:@"value" options:NSKeyValueObservingOptionNew context:nil];
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
在这个方法中,我检查约束。但当我想更正无效值并将其写回时,就会出现“EXC_BAD_ACCESS”异常的问题
我还尝试了以下操作以避免异常,但这没有帮助
[rectDrawer removeObserver:self forKeyPath:@"value"];
rectDrawer.value = _value;
[rectDrawer addObserver:self forKeyPath:@"value" options:NSKeyValueObservingOptionNew context:nil];
是否有可能解决此问题您是否也删除了
dealloc
中的观察结果?一般来说,使用KVO时,您需要非常小心,不要两次添加观察者,并且在解除分配之前删除所有观察者。也许还有其他注册为观察者的对象不再存在,其中一个对象是通过更改观察者方法中的属性触发的。启用僵尸可以帮助调试。嘿,当异常发生时,对象和观察者都处于活动状态。当我在屏幕上编辑rect并且约束想要限制一个值时,就会发生这种情况。此外,没有其他对象观察该值,只有希望调节该值的调用类观察该值。您可能仍然希望启用zombiesEXC\u BAD\u ACCESS
通常是将消息发送到解除分配的对象的结果。如果已启用僵尸,则调试器不会给我任何输出。此外,诊断也没有帮助,因为应用程序正在立即崩溃,并且没有输出。