Ech*_*man 3 memory-leaks dealloc navigationcontroller ios popviewcontrolleranimated
我有一个MyViewController,它基于UIViewController,我使用它像下面的代码:
MyViewController *nextViewController = [[MyViewController alloc] init];
[self.navigationController pushViewController:nextViewController animated:YES];
[nextViewController release];
在具有用户事件的MyViewController中,具有以下代码:
[self.navigationController popViewControllerAnimated:YES];
现在,我发现,MyViewController的dealloc不会被调用,但是,当我将App切换到后台时,例如,传递home按钮,dealloc方法已被调用!这个大问题!当用户转到MyViewController并且一次又一次地返回时,会有很多MyViewController不会被释放,而且只有当App转到后台时才会释放大量内存.
所以,有人可以帮我解决这个问题,谢谢!
显而易见的原因是某些东西保留了你的viewController.您必须仔细查看您的代码.您是否在您的班级中执行任何使用委托的事情,因为他们有时会保留委托.NSURLConnection将保留您的课程,NSTimer也是如此.您可以在您的类中分散代码并记录您的类的保留计数,并尝试找出其中的位置.在你到目前为止显示的代码中,retain可能只是1,因为类只由导航控制器保留.
此外,在弹出视图之前,获取对它的引用,使用NO动画弹出它,然后向它发送一些报告保留计数的消息(这将是您编写的一些新方法).这种新方法还可以记录其他内容,例如是否有任何计时器,NSURLConnections等.
| 归档时间: |
|
| 查看次数: |
3304 次 |
| 最近记录: |