Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone objective-c中的nskvopendingnotification错误_Iphone_Ios_Objective C - Fatal编程技术网

Iphone objective-c中的nskvopendingnotification错误

Iphone objective-c中的nskvopendingnotification错误,iphone,ios,objective-c,Iphone,Ios,Objective C,我有以下问题 在抽象过程中我在objective c中封装了一个类,该类允许我更改基础图像上矩形的大小和位置。 我使用这个类,因为在某些情况下每个都略有不同。 在一个例子中,我需要确保最小和最大尺寸,在另一个例子中,矩形必须是正方形。 因此,我观察用户设置的值,并使用objective-c方法根据规则进行检查: [rectDrawer addObserver:self forKeyPath:@"value" options:NSKeyValueObservingOptionNew context

我有以下问题

抽象过程中我在objective c中封装了一个类,该类允许我更改基础图像上矩形的大小和位置。 我使用这个类,因为在某些情况下每个都略有不同。 在一个例子中,我需要确保最小和最大尺寸,在另一个例子中,矩形必须是正方形。 因此,我观察用户设置的值,并使用objective-c方法根据规则进行检查:

[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并且约束想要限制一个值时,就会发生这种情况。此外,没有其他对象观察该值,只有希望调节该值的调用类观察该值。您可能仍然希望启用zombies
EXC\u BAD\u ACCESS
通常是将消息发送到解除分配的对象的结果。如果已启用僵尸,则调试器不会给我任何输出。此外,诊断也没有帮助,因为应用程序正在立即崩溃,并且没有输出。