Iphone 基于导航控制器的应用程序中的内存使用计费;

Iphone 基于导航控制器的应用程序中的内存使用计费;,iphone,objective-c,memory-management,core-data,uinavigationcontroller,Iphone,Objective C,Memory Management,Core Data,Uinavigationcontroller,我有一个基于导航控制器的应用程序,它可以在相对较长的时间内处于活动状态,可以加载多个屏幕,在其生命周期中重新访问一些屏幕-一个业务应用程序。当我按下屏幕时,我分配一些内存;当我返回(弹出)时,我需要确保内存不会丢失 现在在《泄密》中,我有了一张清白的名单。没有内存泄漏,使用10.6静态分析功能并使用仪器进行确认并不困难。手动检查,我确信我正在释放在ViewWillDisplay中分配的所有内容将在ViewWillEnglishe中出现;viewDidLoad中分配给viewDidUnload的所

我有一个基于导航控制器的应用程序,它可以在相对较长的时间内处于活动状态,可以加载多个屏幕,在其生命周期中重新访问一些屏幕-一个业务应用程序。当我按下屏幕时,我分配一些内存;当我返回(弹出)时,我需要确保内存不会丢失

现在在《泄密》中,我有了一张清白的名单。没有内存泄漏,使用10.6静态分析功能并使用仪器进行确认并不困难。手动检查,我确信我正在释放在ViewWillDisplay中分配的所有内容将在ViewWillEnglishe中出现;viewDidLoad中分配给viewDidUnload的所有内容;在Dealoc中以其他方式分配的所有内容

我在开发中使用了NSZombiesEnabled,但我现在肯定没有激活它

然而,当在对象分配下运行时,我看到内存使用量在增长。在进入一个新视图时,我看到返回时内存增加了,但没有减少相同的数量。这也不是简单的系统无法立即释放,当内存保持静止一段时间时。这种行为在每个视图中都可以看到


我可以使用什么技术来隔离此内存?我是否应该让应用程序在每次查看后都返回到某个基线?如何隔离子系统(如核心数据)使用的内存报告(我依靠故障加载对象,不应尝试显式操作它们),以及我完全控制的代码?

当您将视图推送到导航控制器时,导航控制器内存占用自然会增加。 如果您以任何方式使用核心数据,则可以在每次推送或弹出视图时将整个应用程序的状态持久化为核心数据。这样就不会丢失任何东西。 navigationController管理ViewController的内存,因此如果您超过iPhone的内存,它将开始取消分配ViewController。核心数据管理内存非常积极,因此这是一个很好的方法

通过这种方法,我认为您将利用框架的内存管理,而不是尝试运行自己的,并可能引入长期内存错误:)

我会选择每个viewController的实体,以及保存加载视图的上下文的实体。通过这种方式,您可以测试框架是否已解除分配了任何viewController,然后恢复navigationController堆栈(如果已解除分配)


希望这至少是需要考虑的:)

当您将视图推送到导航控制器时,它的内存占用自然会增加。 如果您以任何方式使用核心数据,则可以在每次推送或弹出视图时将整个应用程序的状态持久化为核心数据。这样就不会丢失任何东西。 navigationController管理ViewController的内存,因此如果您超过iPhone的内存,它将开始取消分配ViewController。核心数据管理内存非常积极,因此这是一个很好的方法

通过这种方法,我认为您将利用框架的内存管理,而不是尝试运行自己的,并可能引入长期内存错误:)

我会选择每个viewController的实体,以及保存加载视图的上下文的实体。通过这种方式,您可以测试框架是否已解除分配了任何viewController,然后恢复navigationController堆栈(如果已解除分配)


希望这至少是一件值得考虑的事情:)

谢谢-我担心答案是“只是冷一点”。。。我知道:)我正在做我的第一个“大型”应用程序,我真的很担心iPhone在内存管理方面会出现什么问题。我收到了1400份名单− 16.000个项目,一次在导航控制器7-8中堆叠自定义UITableView,预加载多达20个页面以实现滚动视图/页面控制效果,使用半复杂的核心数据设置,并在不同线程中解析来自web服务的巨大xml文件。我想这将是一场内存管理的噩梦:)我几乎完成了,内存从未超过3MB。我认为1G iPhone的容量约为20MB,而3G S的容量则是它的数倍。当你说它在不断增加时,它在停止之前会增加多少MB?谢谢-我担心答案是“冷静”。。。我知道:)我正在做我的第一个“大型”应用程序,我真的很担心iPhone在内存管理方面会出现什么问题。我收到了1400份名单− 16.000个项目,一次在导航控制器7-8中堆叠自定义UITableView,预加载多达20个页面以实现滚动视图/页面控制效果,使用半复杂的核心数据设置,并在不同线程中解析来自web服务的巨大xml文件。我想这将是一场内存管理的噩梦:)我几乎完成了,内存从未超过3MB。我认为1G iPhone的容量约为20MB,而3G S的容量则是它的数倍。当你说它在不断增加时,它在停止之前会增加多少MB?