如何调试对象发送KVO通知的原因?

时间:2013-07-10 15:37:06

标签: ios xcode key-value-observing

我正在订阅来自对象的KVO通知。我似乎正在接收对象的关键路径的通知,这些关键路径不应该改变。

确定如何更改这些对象(即通过什么代码)导致通知发送的最佳方法。

理想情况下,可以追溯到更改导致KVO通知的对象的代码行。这可能吗?

2 个答案:

答案 0 :(得分:1)

对我来说太傻了,你实际上只需在观察者中设置断点并查看堆栈跟踪。

答案 1 :(得分:0)

假设你有UIButton,你想知道它改变了什么代码。

您可以创建UIButton的子类并覆盖它的setFrame:方法。接下来,只需初始化MyButton类而不是UIButton类。

#import "MyButton.h"

@implementation MyButton

- (void)setFrame:(CGRect)frame
{
  [super setFrame:frame]; // set the breakpoint here
}

@end

现在,每当UIButton的帧发生变化时,您将在断点处停止,并且您将能够观察堆栈跟踪并调查导致帧更改的代码。