背景:我有一个标签栏控制器,目前包含 4 个标签。其中 3 个选项卡是导航控制器,它们显示用于查看、编辑和创建数据的表视图的层次结构。数据通常是从用户那里获取并存储在全局变量中的 NSStrings(数据需要从层次结构中的多个视图以及多个选项卡中访问)。
问题我注意到我的应用程序一启动就使用了相当多的内存(~11mb)。然而,当我滚动浏览表视图并使用导航控制器访问更多表视图并编辑一些数据时,内存使用量迅速上升到近 20mb。最糟糕的部分是弹出详细视图控制器不会导致内存使用量减少。它将徘徊在20-21mb左右,如果我重复这个过程,我的内存使用率似乎越来越高。我已经在 Leaks 中测试了我的应用程序,并且在那里解决了所有问题。我怀疑我的非活动视图控制器仍在内存中,即使它们当前没有显示。有没有办法在导航控制器的层次结构中释放不需要的视图控制器,甚至是标签栏中的非活动视图控制器?我一直在阅读 Apple 的文档,他们强烈建议在视图控制器和应用程序委托中实现didReceiveMemoryWarning:
和。applicationDidReceiveMemoryWarning:
我真的不知道从哪里开始使用这些方法。我可以发布哪些控制器以及如何重新创建它们?我认为我对此负责,但我想确定一下。
请注意,由于内存使用率低,我还没有让我的应用程序终止,但是足够的数据输入重复(大量视图控制器推送和弹出)将导致它缓慢爬行。