由于自定义 UITableViewCell 的问题,我在 Storyboard中创建了我的项目,我创建了一个新项目,将所有数据复制到我的新类并将我的按钮、图像等从 Storyboard View 复制到新项目的 Nib /xib 文件。
现在,当我点击任何按钮时,我的应用程序会无任何错误地崩溃,它会打开委托(delegate)文件并突出显示这行代码
return UIApplicationMain(argc, argv, nil, NSStringFromClass([ThisOrThatAppDelegate class]));
我已经为从 IB 到 Controller 的所需操作建立了连接。我也尝试过 Command+Shift+K 来获得干净的代码。但问题依然存在。
最佳答案
首先要弄清楚问题是什么:
- 使用调试构建配置并使用 lldb 或 gdb
- 确保所有异常都有断点
- 确保您启用了左上角的“断点”按钮。
- 运行应用
你应该进入调试器。您需要到达调试器捕获异常的地步。
然后编辑您的问题并告诉我们您遇到的异常情况。我猜你会得到一个 objc_msgSend() 错误,这意味着某个对象正试图向一个不存在的或已释放的对象发送消息。如果事实证明这是真的,那么您可以启用“僵尸”(它让所有对象都留在周围)并查看其中一个是否收到消息。
如果似乎没有任何帮助,那么您需要做的是开始添加 NSLog 消息以跟踪您的应用程序出现(或使用断点,您的选择)。这需要很长时间,因此您可能会倒退 - 查看您的 appDelegate application:didFinishLaunchingWithOptions: 是否被调用,以及是否完成了它。
不幸的是,此类问题可能需要花费大量时间来追踪。某些对象可能已经在主队列中为另一个对象排队等待消息,因此当您遇到崩溃时,您看不到谁在什么时候做了什么。
此外,对于 objc_msgSend 问题,当调试器停止时,您无法轻易地看到向哪个对象发送消息 - 但如果您关闭调试器并让应用程序实际崩溃,您可以在控制台应用程序中找到崩溃报告并获取更多信息从那个。
关于单击按钮时 iPhone 应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11527006/