2012-08-15 26 views
0

我该如何去了解我的代码在哪里导致以下异常?如何找到Objective-C中无法识别的选择器异常的位置?

2012-08-15 09:24:27.414 TestProject[82870:17303] -[TestObj doIt]: unrecognized selector sent to instance 0x1106f320 
+0

不幸的是我相信现在有办法以一种简单的方式做到这一点,您将需要调试并搜索它。 – ggrana 2012-08-15 13:33:08

回答

3

最好的方法:添加一个捕获所有异常的断点,这将为您提供获取异常的代码行。在控制台中,您将得到与您的问题相同的消息,因此请使用指针地址打印出现异常的对象。如果对象是垃圾(调试器不会打印它),那意味着您正在过度释放对象。如果你有僵尸启用,你会发现类名前缀NSZombie__。这也意味着过度销售。如果您获得的课程不同于您期望的课程,则您将在某个时间切换对象并向错误的对象发送消息。

+1

这并没有解决我的问题,但我很欣赏详细的解释,这可以在未来类似的问题派上用场。 – Boon 2012-08-20 16:36:46

1

为抛出的异常设置断点。默认情况下,当抛出异常时它会暂停 - 你会看到回溯和值。

如果它是完全随机的(例如不可重现),那么你可能有最好的运气运行仪器与僵尸启用。

+0

是的,我做到了,但是当异常点击Xcode打破了错误的地方(main.m)。 – Boon 2012-08-15 13:51:25

+0

然后继续,如果这不是你感兴趣的断点 – justin 2012-08-15 13:56:15

3
  • 转到断点导航仪(左)
  • 你有一个+底部,
  • 上所有异常添加一个异常断点做
相关问题