弹出到UIViewController导致崩溃 - 消息发送到解除分配的实例

时间:2012-09-17 17:46:22

标签: objective-c ipad

我有UIViewController我正在显示为模态弹出框。当我正在使用该视图时,我会弹出到UINavigationBar中的特定位置:

[[appDelegate.homeViewController navigationController] popToViewController:[[appDelegate.homeViewController navigationController ].viewControllers objectAtIndex:2] animated:YES];

在下面的崩溃中提到了呈现模式UIViewController的视图控制器:

*** -[ClientDetailsViewController respondsToSelector:]: message sent to deallocated instance 0x8c17650

如何跟踪此情况并查看导致崩溃的原因?

1 个答案:

答案 0 :(得分:3)

  

如何跟踪此情况并查看导致崩溃的原因?

只需激活 Zombies

  • 在Xcode4中,按住 alt 键,同时选择“产品”>从菜单中“运行”以显示“方案”对话框(或选择“编辑方案”以显示它)。
  • 然后在“诊断”标签中,选中“启用僵尸对象”复选框

Diagnostics Dialog 现在,当一个对象在被解除分配后使用时,您将能够看到哪个对象以及它何时被过度释放。


此外,请不要犹豫使用“产品”中的静态分析器 - > “分析”菜单,以便Xcode告诉您可以在代码中找到的每个内存管理错误(和其他内容)。

Static Analyzer example

你应该偶尔运行这个“分析”工具并修复它显示的所有警告,因为它是一个非常好的工具,可以告诉你代码中可能出现的问题,并且是非常好的建议。

运行此工具时没有任何警告并不能保证您的代码不会崩溃,但是在运行此工具时发出警告可以保证您的代码中有一些问题需要修复。