在NSKVODeallocateBreak设置断点

时间:2011-09-19 05:01:51

标签: iphone xcode mkmapview lldb

我正在玩地图工具包,我创建了一个注释。我试图找到我的错误,因为这个错误:

  

类AddressAnnotation的实例0x1b7ac0已取消分配,而键值观察者仍在其中注册。观察信息被泄露,甚至可能被错误地附加到其他物体上。在NSKVODeallocateBreak上设置断点以在调试器中停止。这是当前的观察信息:

我不确定NSKVODeallocateBreak在哪里设置断点。我以为我可以使用Instruments来调试它,但是当我尝试时,它崩溃而没有给我任何指示它崩溃的地方。有什么想法吗?

2 个答案:

答案 0 :(得分:16)

你可能在你的代码中做了类似的事情:

[addressAnnotation addObserver:self forKeyPath:kSelectedAnnotationObserverKeyPath options:NSKeyValueObservingOptionNew context:@"selectedOrDeselected"];

这意味着您正在注册观察者以找出何时选择了注释。

当注释从地图中删除时,您应该删除观察者,如下所示:

[addressAnnotation removeObserver:self forKeyPath:kSelectedAnnotationObserverKeyPath];

那应该删除错误。如果没有并且您想要调试它,您当然应该在NSKVODeallocateBreak上设置断点。要执行此操作,请打开Run菜单,Manage BreakpointsAdd symbolic breakpoint,然后输入NSKVODeallocateBreak

希望它有所帮助!

答案 1 :(得分:5)

要在此处使用LLDB设置断点,启动应用程序,然后暂停它,并在LLDB调试提示符处写入:

breakpoint set --name NSKVODeallocateBreak

现在你已经设置了一个断点。希望这可以帮助您找到问题,这可能是@frowing描述的那种

相关问题