iPhone:“无法识别的选择器发送到实例”错误

问题描述:

我试图在ramin.firoozye.com上使用“iPhone上的半模(透明)对话框”中的代码在我的应用中实现部分覆盖模式。叠加功能起作用,它将模态滑动到视图中,但从模态控制器调用任何IBAction会导致“无法识别的选择器发送到实例”崩溃。iPhone:“无法识别的选择器发送到实例”错误

我重新创建了与该代码隔离的基本功能,并触发了相同的错误。要看我在说什么,你可以download the test project here

我敢肯定,我只是在这里错过了一些简单的东西。任何帮助将不胜感激。

当在TestViewController的displayModal中显示你的ModalViewController时,你释放你的modalController(第20行)。不要这样做 - 你需要ViewController保持活着。如果释放它,只有视图保持活动状态(因为它在作为子视图添加时保留)。

此外,在ModalViewController hideModalEnded你释放modalView,你没有保留,所以我会删除那一个。

所以现在你需要在视图被移除后才释放ModalViewController的实例。你可以通过[self release]来做到这一点;在hideModalEnded中,但这似乎是一种不寻常的模式,我不觉得这样做很好。

几点建议:

  • 保持显示和隐藏在 同一个类的方法。
  • 保持ivar与 控制器。
  • 另一种可能性:删除 ModalViewController和 把所有东西都放在TestViewController中 - 但是这非常依赖于真实情况下会发生多少操作。
+0

哈!那很简单。感谢您节省我几个小时的调试时间! – Cuzog 2010-06-03 21:22:23

+0

同样的测试应用程序,新的错误。不知道这是否与发布有关,但如果您打开该模式并再次关闭该模式,第8次将会使应用程序崩溃。调试器显示“EXC_BAD_ACCESS”。 – Cuzog 2010-06-03 22:25:22

+0

对不起,混合了视图和控制器,并且发布漏洞通过...我不知道为什么它始终在第8次化身失败。 – Eiko 2010-06-03 23:15:22