删除viewController时清除内存

时间:2014-05-14 11:21:13

标签: ios objective-c

我有这个视图控制器(class1),其中有UICollectionView。 当我完成这个视图时,我将进入下一个视图,但我可以看到此视图(class1)的内存消耗未被清除并被添加到下一个视图(class2)。

两个视图控制器都是用故事板制作的,并且有一个名字,当我用view1(class1)完成时,我将使用以下命令进行下一个:

//in view1 i do when exit
    UIViewController *mainV=[self.storyboard instantiateViewControllerWithIdentifier:@"MainView"];
    mainV.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
    [self presentViewController:mainV animated:YES completion:^(void)
     {
         [self.myCache removeAllObjects];//NSCache
         [self.GridView removeFromSuperview]; //collection view
         [self.view removeFromSuperview];

     }];

似乎内存仍未释放。 还有另一种方法可以转移到下一个视图并清除之前的所有内容吗?

2 个答案:

答案 0 :(得分:0)

在该代码中,class1呈现class2。但是class1仍然存在,呈现class2,直到它执行“dismissViewController:”方法。

如果你想从class1返回mainView。并且在mainView呈现class1的情况下。然后mainView必须做一个dismissViewController:

在其他情况下,您正在堆叠一堆视图控制器,一个呈现下一个。

objetive-c中最常用的模式是从class1向其演示者发送消息。委托模式。然后,演示者关闭viewController。

答案 1 :(得分:0)

即使从superview中删除了网格视图,如果它是视图控制器类的iVar或强大的属性,它也不会从内存中清除。调用[self.GridView removeFromSuperview]后,尝试将GridView设置为nil。