0

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

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

3 回答 3

3
  • 转到断点导航器(左侧)
  • 在底部你有一个+,
  • 在所有异常上添加异常断点
于 2012-08-15T13:41:52.517 回答
3

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

于 2012-08-15T14:31:20.643 回答
1

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

如果它是完全随机的(例如不可重现),那么您可能会在启用僵尸的情况下运行 Instruments。

于 2012-08-15T13:36:40.523 回答