我有这个视图控制器(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];
}];
似乎内存仍未释放。 还有另一种方法可以转移到下一个视图并清除之前的所有内容吗?
答案 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。