在基于标签栏的应用程序中,如果我从一个选项卡中将一个控制器推入导航堆栈中,然后当另一个选项卡处于活动状态时,我尝试弹出该控制器,除非在没有动画的情况下弹出该控制器,否则它不会被释放。UIKit不释放控制器,如果它没有被动画删除?
这工作:
[navigationController popToRootViewControllerAnimated:NO];
这并不:
[navigationController popToRootViewControllerAnimated:YES];
没有人有这里发生了什么的任何想法? animated
参数使用不当吗?
UPDATE:
苹果告诉我,这确实是UIKit中的错误,他们将其标记为紧急,并指派某人吧。它可能已在最新版本中得到解决,但我没有时间检查。
听起来像是UIKit中的错误。如果您可以通过简单的项目进行确认,请将其提交给Apple。 – 2010-07-16 12:42:22
我刚刚创建了一个示例项目来确认它,我可以这么做。当然,这不是每次使用UINavigationController都会发生的事情。如果在一个选项卡内有一个带有导航控制器的UITabBarController,并且从另一个选项卡弹出导航控制器,则会发生这种情况。我注意到,如果堆栈中有多个视图控制器,除最后一个之外,它们都会被释放,直到您选择返回另一个选项卡(带有导航控制器的那个)时才会保留。 – eugeniodepalo 2010-07-16 14:30:19
如果用“last”控制器表示根控制器,那么这是相关的:“如果堆栈顶部的视图控制器是根视图控制器,这个方法什么都不做......你不能弹出最后一个项目堆栈“。 (来自'popViewControllerAnimated:'的文档)。你很少必须担心UIKit何时发布对象。只要确保你做了你的内存管理的一部分。谁知道,也许框架会保留一个对象来回收它?或者可能不是。关键是,你可以依靠它们进行充分测试。 – Felixyz 2010-07-17 00:58:01