3

在应用程序的某个位置,我的对象中的属性被设置为一个奇怪的值。通常情况下,我会通过设置一个类似的象征断点调试这样的事情:是否可以使用动态属性设置符的符号断点(或类似符号)?

enter image description here

这样,当有人试图将该属性设置为我在寻找的价值,我得到一击和我可以看看这个痕迹,看看它是从哪里来的。

不幸的是,当您处理声明为@dynamic的属性时,这不起作用。有没有其他方法可以做类似的事情?

更多信息

有问题的对象是NSManagedObject

本项目采用RestKit其很有可能这就是价值的来源。

+0

我猜你已经尝试过自己实现setter,并在那里放置一个断点? – Lance 2014-12-03 19:30:27

+0

@Lance - 我没有试过。我不知道为什么我认为你不能覆盖NSManagedObject上'@ dynamic'属性的setter。我只是试了一下,它的工作。我想我应该看得更远!如果你想更彻底地解释它,并将其添加为答案,我会继续接受。谢谢! – Logan 2014-12-03 19:38:19

回答

2

你可以自己实现setter,并在那里放置一个断点。实现核心数据属性设置器与正常情况有点不同。这样的事情应该工作:

- (void)setFoo:(NSObject *)foo { 
    [self willChangeValueForKey:@"foo"]; 
    [self setPrimitiveValue:foo forKey:@"foo"]; 
    [self didChangeValueForKey:@"foo"]; 
} 
+3

执行此操作后,符号断点也会被触发。谢谢 – Logan 2014-12-03 20:07:31