在应用程序的某个位置,我的对象中的属性被设置为一个奇怪的值。通常情况下,我会通过设置一个类似的象征断点调试这样的事情:是否可以使用动态属性设置符的符号断点(或类似符号)?
这样,当有人试图将该属性设置为我在寻找的价值,我得到一击和我可以看看这个痕迹,看看它是从哪里来的。
不幸的是,当您处理声明为@dynamic的属性时,这不起作用。有没有其他方法可以做类似的事情?
更多信息
有问题的对象是NSManagedObject
本项目采用RestKit其很有可能这就是价值的来源。
在应用程序的某个位置,我的对象中的属性被设置为一个奇怪的值。通常情况下,我会通过设置一个类似的象征断点调试这样的事情:是否可以使用动态属性设置符的符号断点(或类似符号)?
这样,当有人试图将该属性设置为我在寻找的价值,我得到一击和我可以看看这个痕迹,看看它是从哪里来的。
不幸的是,当您处理声明为@dynamic的属性时,这不起作用。有没有其他方法可以做类似的事情?
更多信息
有问题的对象是NSManagedObject
本项目采用RestKit其很有可能这就是价值的来源。
你可以自己实现setter,并在那里放置一个断点。实现核心数据属性设置器与正常情况有点不同。这样的事情应该工作:
- (void)setFoo:(NSObject *)foo {
[self willChangeValueForKey:@"foo"];
[self setPrimitiveValue:foo forKey:@"foo"];
[self didChangeValueForKey:@"foo"];
}
执行此操作后,符号断点也会被触发。谢谢 – Logan 2014-12-03 20:07:31
我猜你已经尝试过自己实现setter,并在那里放置一个断点? – Lance 2014-12-03 19:30:27
@Lance - 我没有试过。我不知道为什么我认为你不能覆盖NSManagedObject上'@ dynamic'属性的setter。我只是试了一下,它的工作。我想我应该看得更远!如果你想更彻底地解释它,并将其添加为答案,我会继续接受。谢谢! – Logan 2014-12-03 19:38:19