使用UINavigationController进行MemoryManagement

时间:2014-05-24 15:23:02

标签: objective-c memory-management uiview uinavigationcontroller

我的NavigationController有一个“问题”。实际上在我看来,这种行为似乎是有意的。

My App使用SplitViewController,使用TableViewController作为MasterView,使用NavigationController作为DetailView。

我有4个视图,我可以从每个视图切换到另一个视图。我观察到的是每次我使用其中一个NavigationController按钮来更改View时,内存消耗增加了近1.5MB。

使用NavigationController的后退按钮,当使用的内存减少时,视图似乎正确释放。

我读到每次切换时都将视图放在堆栈上,但实际上这不是我需要的(至少我希望如此,因为在某种程度上我依赖于viewdidload方法来更新内容,我通过NSNotification传递给每个视图。那时如果所有视图都可以共享传递给userInfo的那样会很好,但这是一个不同的故事......)。

所以我正在寻找的是一种方法来替换NavigationController视图堆栈上的最新ViewController。我不需要100个视图的历史记录,其中40个视图总是实际上是相同的。我只使用后退按钮找到了关于内存未被释放的答案。因此,我假设当前的行为是预期的行为。

1 个答案:

答案 0 :(得分:2)

  

我正在寻找的是一种方法来替换NavigationController视图堆栈上的最新ViewController

setViewControllers:animated:允许您根据自己的喜好构建堆栈。

https://developer.apple.com/library/ios/documentation/uikit/reference/UINavigationController_Class/Reference/Reference.html#//apple_ref/occ/instm/UINavigationController/setViewControllers:animated: