导航内存增加,永不减少。 弹出视图控制器时如何减少?

在我的程序中,我有六个视图控制器。 为了在这些视图控制器之间导航,我使用了UINavigationController。

我将使用两个视图控制器解释此问题。 在第一个视图控制器中,我实现了这样的按钮操作

- (IBAction)clickSearch:(id)sender{ [self gotoSearch]; } -(void)gotoSearch { NSArray *vc = [self.navigationController viewControllers]; ViewControllerSearch *vcSearch = nil; for (int i = 0; i < [vc count]; i++) { UIViewController *tempVC = [vc objectAtIndex:i]; if ([tempVC isKindOfClass:[ViewControllerSearch class]]) { vcSearch = [vc objectAtIndex:i]; break; } } if (vcSearch) { //If exists inside stack the pop [self.navigationController popToViewController:vcSearch animated:YES]; } else { //If not exists inside stack push ViewController3 ViewControllerSearch *vc3New = [self.storyboard instantiateViewControllerWithIdentifier:@"vcsearch"]; [self.navigationController pushViewController:vc3New animated:YES]; vc3New = nil; } } 

第二个视图控制器有一个按钮,该按钮动作也如上所述实现。

如果我从第一个视图控制器移动到第二个视图控制器,内存增加。(确定)

如果我从第二个视图控制器移动到第一个视图控制器,内存级别不会改变。

我再次从第一个视图控制器移动到第二个视图控制器,内存增加。你可以在这个图像中看到它。

(内存没有减少)我怎样才能减少内存? 在此处输入图像描述

第一次第一次到第二次:NSArray * vc有一个对象(第一个VC)

第二个到第一个:NSArray * vc有两个对象(第一个VC,第二个VC)

现在我在第一个视图controller.now我点击移动第二个视图控制器:NSArray * vc只有一个对象(第一个VC)。第二个vc缺失。并增加内存(我认为它为新的第二个vc)