如何在Objective-C中找出无法识别的选择器异常的位置?

时间:2012-08-15 13:30:44

标签: objective-c

如何查找代码中的哪个位置导致以下异常?

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

3 个答案:

答案 0 :(得分:3)

  • 转到断点导航器(左侧)
  • 在底部你有一个+,
  • 在所有例外
  • 上添加例外断点

答案 1 :(得分:3)

最佳方法:添加断点以捕获所有异常,这将为您提供获得异常的代码行。从控制台,您将收到与您的问题相同的消息,因此,使用指针地址来打印获得异常的对象。如果对象是垃圾(调试器不打印它),这意味着您正在过度释放对象。如果您启用了僵尸,您将在类名上找到前缀NSZombie__。这也意味着过度发布。如果你获得的类不同于你期望的类,那么你将在某个时刻切换对象并向错误的对象发送消息。

答案 2 :(得分:1)

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

如果它是完全随机的(例如不可重复),那么你可以运行启用僵尸的乐器运气好。