首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NavigationController堆栈

NavigationController堆栈
EN

Stack Overflow用户
提问于 2011-01-29 03:38:44
回答 1查看 1.5K关注 0票数 1

首先,我为我糟糕的英语感到抱歉。我会试着解释我的问题:

我有一个RootViewController (基于导航的项目)。因此,它显示表视图,当用户选择表(didSelectRowAtIndexPath) y的一行时,执行以下操作以显示下一个视图:

代码语言:javascript
复制
NextViewController *nextView = [[NextViewController alloc] initWithNibName:@"NextViewController" bundle:nil];
[self.navigationController pushViewController:nextView animated:YES];
[nextView release];

如果用户选择导航栏的back按钮并再次选择该行,并重复执行此操作,会发生什么情况?是否正在创建大量新视图(NextViewController实例)(大量内存分配)?或者他只是在堆栈中导航?

你能帮帮我吗?我不想这样浪费内存(如果是这样的话)。谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-01-29 03:46:21

如果用户重复地在RootViewController和NextViewController之间来回切换,将会发生以下情况:

  1. NextViewController是在您的didSelectRowAtIndexPath:方法中创建(alloc'd)的。因为您在其上调用了init方法,所以您负责释放它。
  2. 您将nextView推送到导航控制器堆栈上,该堆栈将保留它。

< NextViewController >H19您释放nextView,因此唯一具有保留的是您的用户从NextViewController移回的导航‘re,导航控制器将释放它。现在没有任何内容保留nextView,因此它获得dealloc'd。内存已释放。

基本上,您确实在用户每次来回移动时创建了一个NextViewController (您并不是“只是在堆栈中导航”,因为对象每次都在改变),但是您不会泄漏大量内存,也不会占用您创建的每个控制器。您的内存使用量在这里是正常的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4832339

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档