1

我有三个视图控制器在navigationcontroller被推第三个我所用的语句popToViewController和内存管理

[self.navigationController popToViewController:(Main_View*) mainViewObj animated:YES];

它需要我直接到我指定的控制器先说。我做了一些编码,从一个NSMutableDictionary在所有视图控制器删除viewWillDisappear方法的对象,我使用断点调试尝试,但还没有出现,viewWillDisappear,它需要我直接到Main_View。我应该担心从字典中删除对象还是释放它?

+0

写 - (空)viewDidDisappear:(BOOL)动画 – 2013-04-05 12:08:28

+0

我试过,但只有最后一个视图控制器viewDidDisappear被调用。 – Hassy 2013-04-05 12:12:50

+0

Dude在自动弹出视图时会释放您的NSMutableDictionary。 – 2013-04-05 12:14:51

回答

2

viewWillDisappear:方法不呼吁其他视图控制器,因为他们已经当你在它们上面推视图控制器已经消失了。所以基本上,viewWillDisappear:已经在早些时候被调用。再次调用它是没有意义的,因为它们一开始并不可见。在

+0

是的,但我做了一个检查(如果语句),只有当你做popviewcontroller调用时,pushviewcontroller不让它做我的任务,所以如果不是viewwilldisappear方法那么为此目的最适合的方式是什么? – Hassy 2013-04-06 06:26:23

+0

取决于你实际正在做什么......从你的问题中不太清楚*为什么当你弹出视图控制器时你需要从字典中删除一些对象。您是否稍后重用这些视图控制器?如果不是,你可能想在'dealloc'中做“清理”任务。否则,你可能想考虑继承'UINavigationController'。 – omz 2013-04-06 07:50:46

0

你可以尝试在你的AppDelegate中保留对你的NSMutableDictanories的弱引用,然后在mainViewController中的poptoviewcontroller获取它们,看看它们是否为零,如果没有,你可以从你的主目录中的字典中删除对象查看与该参考。

+0

做一个可能的解决方案谢谢 – Hassy 2013-04-05 13:13:54