Ios viewController';s Dealoc don';调用navigationController popViewControllerAnimated时不能调用

Ios viewController';s Dealoc don';调用navigationController popViewControllerAnimated时不能调用,ios,memory-leaks,dealloc,navigationcontroller,popviewcontrolleranimated,Ios,Memory Leaks,Dealloc,Navigationcontroller,Popviewcontrolleranimated,我有一个MyViewController,它基于UIViewController,我使用它的代码如下: MyViewController*nextViewController=[[MyViewController alloc]init]; [self.navigationController pushViewController:nextViewController动画:是]; [nextViewController发布]; 在MyViewController中,带有用户事件,具有以下代码:

我有一个MyViewController,它基于UIViewController,我使用它的代码如下:

MyViewController*nextViewController=[[MyViewController alloc]init];
[self.navigationController pushViewController:nextViewController动画:是];
[nextViewController发布];

在MyViewController中,带有用户事件,具有以下代码:

[self.navigationController popViewControllerAnimated:是]

现在,我发现MyViewController的dealloc没有被调用,但是,当我将应用程序切换到后台时,例如,传递home按钮,dealloc方法被调用了!这是个大问题!当用户转到MyViewController,然后一次又一次地返回时,将会有很多MyViewController不会被释放,只是,只有当应用程序转到后台时,大量内存才会被释放


所以,有人能帮我吗,谢谢

显而易见的原因是有东西保留了您的viewController。您必须仔细查看您的代码。你是否在你的课堂上做了任何使用委托的事情,因为他们有时会保留委托。NSURLConnection将保留您的类,NSTimer也将保留。您可以将代码分散在类中,记录类的保留计数,并尝试找出位置。到目前为止,在您展示的代码中,retain可以仅为1,因为该类仅由导航控制器保留

另外,在弹出视图之前,获取对它的引用,在没有动画的情况下弹出它,然后向它发送一些消息,让它报告保留计数(这将是您编写的一些新方法)。这个新方法还可以记录其他事情,比如是否有任何计时器在运行,NSURLConnections等等