iOS内存警告发送到解除分配的UIViewController

我有奇怪的行为。 我的应用程序正在使用UINavigationController启动。 如果我推视图控制器ANavigationController ,回去模拟内存警告一切正常。

如果我以相同的方式推动相同的视图控制器( ANavigationController ),请返回并模拟内存警告 – 应用程序崩溃,错误:

[ANavigationController retain] :发送到释放实例的消息。

在debugging时,我打印了推送控制器的地址并释放了一个地址:

  1. 在第一个推送控制器地址是0xDA724F0
  2. 如果我回去模拟记忆警告 – 一切都好。
  3. 调用地址为0xDA724F0第二个push- –dealloc方法。
  4. 新推控制器地址是0xFA720F0
  5. 回去并模拟内存警告崩溃与错误:

[ANavigationController retain] :发送到解除分配的实例0xDA724F0消息。 为什么释放控制器(在步骤4)根本得到内存警告信息?

编辑

我正在使用ARC。

编辑

运行仪器来testing分配和启用NSZombie我在预期的地方崩溃,但是在UIkit库和负责调用者报告的-1引用计数是:

+ [UIViewController _traverseViewControllerHierarchyWithDelayedReleaseArray:block:]

我不确定这是解决scheme还是解决问题的方法,但禁用此特定文件的ARC可解决此问题。 当然,我必须自己去pipe理记忆。

不过,我会欣赏任何线索是什么问题。

编辑

find了解决办法。 请看我对我的另一个问题的答案: [UINavigationController retain]:发送到释放实例的消息