如何找出我的代码中的哪个位置导致了以下异常?
2012-08-15 09:24:27.414 TestProject[82870:17303] -[TestObj doIt]: unrecognized selector sent to instance 0x1106f320
如何找出我的代码中的哪个位置导致了以下异常?
2012-08-15 09:24:27.414 TestProject[82870:17303] -[TestObj doIt]: unrecognized selector sent to instance 0x1106f320
最好的方法:添加一个断点来捕获所有异常,这将为您提供获取异常的代码行。从控制台,您将收到您在问题上发布的相同消息,因此,使用指针地址打印正在获取异常的对象。如果对象是垃圾(调试器不会打印它),这意味着您正在过度释放对象。如果你启用了僵尸,你会在你的类名上找到一个前缀 NSZombie__ 。这也意味着过度释放。如果你得到的类与你期望的不同,那么你在某个时候切换了对象并向错误的对象发送了一条消息。
为抛出的异常设置断点。默认情况下,它会在抛出异常时暂停——在那里你会看到回溯和值。
如果它是完全随机的(例如不可重现),那么您可能会在启用僵尸的情况下运行 Instruments。