当第一个响应者设置时,dismisViewController会泄漏viewcontrollers

时间:2014-01-29 19:59:05

标签: iphone cocoa-touch uiviewcontroller uiresponder

在我的简单导航风格的iPhone应用程序中,当用户按下按钮时,我使用presentViewController呈现视图控制器V1(模态)。

当用户按下另一个按钮时,然后使用presentViewController呈现另一个视图控制器V2(模态)。

然后我尝试通过在根导航控制器上调用dismissViewController来解决这两个问题,并且如预期的那样它们会从屏幕上消失:-)然而,当我记录dealloc调用时,我什么也看不见: - (

通过反复试验我追踪到的问题是在V1中我实现了canBecomeFirstResponder == YES。如果我将此更改为NO,那么所有内容都会正确释放。好像第一响应者正在保持对V1的引用。然而 - 当我出现V2时,我看到V1辞职第一响应者。实际上,如果我不会出现V2,那么V1将会解除罚款/

任何人都会看到这样的事情或知道发生了什么事情?我在iOS7上

[更新:我使用的是ARC,它只是一个非常简单的测试应用程序 - 所以在任何地方都没有代表或强引用。)

感谢。

2 个答案:

答案 0 :(得分:1)

为什么不在呈现V2之前首先解雇V1?然后你只需要解雇V2就可以回到root。

答案 1 :(得分:0)

在解除之前,请在导航控制器上调用poptorootviewcontroller。