2014-05-14 62 views
0

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

两个视图控制器与故事板制成,并有一个名字,当我用厂景(1类)完成我要去到下一个具有:

//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]; 

    }]; 

看来,内存仍然不释放。 有没有另一种方法可以移动到下一个视图,并清除之前的一切?

+0

设置为零的视图从内存中清除它 – Pawan

回答

0

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

如果您想要从class1返回到mainView。而在class1由mainView提供的情况下。然后mainView必须做一个dismissViewController:

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

objetive-c中最常用的模式是从class1发送消息给其发言人。代表团模式。演示者然后关闭viewController。

+0

你能告诉我你刚才谈到的模式的例子吗? – Curnelious

0

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