0

我在情节提要中制作了项目,由于自定义 UITableViewCell 的问题,我制作了一个新项目,将所有数据复制到我的新类中,并将我的按钮、图像等从情节提要视图复制到新项目的 nib/xib 文件中。

现在,当我单击任何按钮时,我的应用程序崩溃而没有任何错误,它会打开委托文件并突出显示这行代码

return UIApplicationMain(argc, argv, nil, NSStringFromClass([ThisOrThatAppDelegate class]));

我已经为从 IB 到控制器的所需操作建立了连接。我也尝试过 Command+Shift+K 来获得干净的代码。但问题仍然存在。

4

1 回答 1

2

您必须首先找出问题所在:

  • 使用调试构建配置并使用 lldb 或 gdb
  • 确保所有异常都有断点
  • 确保您启用了左上角的“断点”按钮。
  • 运行应用程序

你应该闯入调试器。您需要达到调试器捕获异常的程度。

然后编辑您的问题并告诉我们您遇到了什么异常。我猜你会得到一个 objc_msgSend() 错误,这意味着某个对象正在尝试向一个不存在或已解除分配的对象发送消息。如果事实证明这是真的,那么您可以启用“僵尸”(让所有对象都留在周围)并查看其中一个是否收到消息。

如果似乎没有任何帮助,那么您需要做的是开始添加 NSLog 消息以在您的应用程序出现时跟踪它(或使用断点,您的选择)。这需要很长时间,因此您可能会向后工作 - 查看您的 appDelegate application:didFinishLaunchingWithOptions: 是否被调用,以及是否已完成。

不幸的是,这类问题可能需要花费大量时间才能找到。一些对象可能已经为主队列中的另一个对象排队了一条消息,所以当你遇到崩溃时,你看不到谁在什么时候做了什么。

此外,对于 objc_msgSend 问题,当调试器停止时,您无法轻松查看收到消息的对象 - 但如果您关闭调试器并让应用程序实际崩溃,您可以在控制台应用程序中找到崩溃报告并从中获取更多信息。

于 2012-07-17T17:40:43.190 回答