1

在我的程序中,我有六个视图控制器。为了在这些视图控制器之间导航,我使用了 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)

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

4

0 回答 0