0

我收到以下运行时错误,我无法确定我的一生 WHYYYY。每当我从任何 VC执行或方法Thread 1: EXC_BREAKPOINT (code=EXC_1386_BPT, subcode=0x0)时,似乎都会发生错误。dismissModalViewController:animatedpushViewController:animated

我启用了僵尸对象,并在调试器中显示以下消息,2012-06-14 16:34:58.769 MyApp[5952:17903] *** -[MyDetailsVC respondsToSelector:]: message sent to deallocated instance 0x8c3d400.

这只发生在我访问 MyDetailsVC ViewController 之后场景如下。

  • 启动应用程序,一切正常,我可以从视图控制器中推送和弹出,并呈现和关闭模态 VC,没有任何问题。
  • 我推到 MyDetailsVC,什么都不做,然后点击返回按钮。
  • 我现在回到了推送到 MyDetailsVC 之前的位置,该应用程序继续完美运行,直到我必须推送到 VC 或呈现模态 VC。然后我得到运行时错误。

当我遇到错误时,MyDetailsVC 甚至不在图片中,也与其他 VC 没有任何关系。

我怎样才能更详细地使用调试器来确定这个问题是什么?

此外,错误消息说“消息已发送”,所以我已经在我的 VC 中评论了我所有的 NSNotifications,以排除我的一个 VC 试图向不再是的 VC 发送消息的可能性活着……没有运气!

PS - 我正在使用 Xcode 4.3.1、5.1 w/ARC

4

2 回答 2

1

问题不在于 NSNotifications。Objective-c 中的消息只是函数/方法调用。看起来 respondsToSelector: 导致了这个问题。

检查 MyDetailsVC 是否有 [self respondsToSelector:@"some method here"]。也可能是在 MyDetailsVC 被解除和释放后,另一个对象在 MyDetailsVC 上调用了 respondsToSelector。确保在 ViewDidUnload 下的 MyDetailsVC 中将 @synthesized 属性设置为 nil 并停止所有挂起的 performSelector 调用。

于 2012-06-15T00:19:36.810 回答
1

调试器中的回调堆栈中没有任何内容可以向您显示代码的哪一行正在发生?

respondsToSelector 在委托上被大量调用(以查看是否实现了协议中的可选方法)。您的 MyDetailsVC 是否将自己指定为任何事情的代表?如果是这样,请确保在您的 dealloc 例程中分配 xyz.delegate = nil 。

所以你可能有“self.navigationController.delegate = self”。因此,您需要在您的 dealloc 例程中匹配“self.navigationController.delegate = nil”。

于 2012-06-15T00:25:45.820 回答