0

现在我的应用应该只支持肖像。在摘要/支持的设备方向上,我只选择了纵向,所以我希望我的应用程序不会旋转。我正在设备上测试应用程序,突然我随机收到以下错误:

[UIButtonContent deviceOrientationDidChange:]: unrecognized selector sent to instance

当我有时旋转设备时会发生这种情况,不一致,并且并不总是超过 UIBUttonContent。我认为如果我只选择肖像,则不应调用或忽略 deviceOrientationDidChange。

其他时候我的应用程序因 EXC_BAD_ACCESS (code=1, address=something) 而崩溃,但它发生在我旋转设备时,所以我猜测这两个错误是相关的。

我不知道该怎么做,很难调试,因为我没有反馈,没有调用 All Exceptions Breakpoint,所以我不知道发生这种情况的位置和确切原因。欢迎任何关于如何调试的想法。

4

3 回答 3

1

这些是内存管理错误的典型迹象。您已经过度释放了一些对象,并且它已被释放,而其他东西仍在引用它。后来,有东西给它发消息。在某些情况下,一个新对象取代了它的位置,但该对象不理解它正在接收的消息。在其他情况下,没有有效的对象并且您会崩溃。

编辑了使用 Zombies 工具查找过度释放的建议。

于 2012-04-11T17:25:23.197 回答
0

你有一个应该被调用的类deviceOrientationDidChange:吗?发生这种情况时,通常意味着您对已释放对象有一个悬空引用。您应该尝试在“僵尸”模式下使用 Instruments 分析您的应用程序。

于 2012-04-11T17:25:10.797 回答
0

我很久以前就解决了这个问题,但我认为分享这个案例对我的实际帮助是件好事。

在用 Instruments 尝试了一切都没有结果之后,我开始调试老派。我知道错误在“哪里”,所以我只是评论了该部分的所有代码。我是对的,该错误与一些功能一起消失了。之后我做了“二进制取消注释”(取消注释一半)直到我得到错误行。这是一个第三方库,我有一个未正确释放的对象。

于 2012-06-03T11:43:31.130 回答