在NSKVODeallocateBreak设置断点

Cry*_*tal 10 iphone xcode mkmapview lldb

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

解释了类AddressAnnotation的实例0x1b7ac0,而键值观察者仍然注册了它.观察信息被泄露,甚至可能被错误地附加到其他物体上.在NSKVODeallocateBreak上设置断点以在调试器中停止.这是目前的观察信息:

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

Fra*_*ano 16

您可能在代码中执行以下操作:

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

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

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

[addressAnnotation removeObserver:self forKeyPath:kSelectedAnnotationObserverKeyPath];

这应该删除错误.如果没有,你想调试它,你当然应该设置一个断点NSKVODeallocateBreak.为了做到这一点,打开Run菜单,Manage Breakpoints,Add symbolic breakpoint,输入NSKVODeallocateBreak你瞧.

希望能帮助到你!

  • 要在Xcode 4中设置符号断点,请切换到Breakpoint导航器并单击底部的小加号按钮.(通过https://devforums.apple.com/thread/68421) (6认同)

nik*_*ers 5

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

breakpoint set --name NSKVODeallocateBreak
Run Code Online (Sandbox Code Playgroud)

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