摆脱ViewControllers

时间:2014-08-14 12:29:39

标签: ios objective-c uiviewcontroller uinavigationcontroller

我已经在这个项目上工作了很长一段时间,除了一件事,我几乎完成了所有事情的修复:来自viewcontrollers的内存泄漏。

以下是我的情况:我从主根视图控制器开始,然后像这样导航VC(root - > Levels - > Level1)

Level1* level1 = [self.storyboard instantiateViewControllerWithIdentifier:@"Level1"];
[self presentViewController:level1 animated:YES completion:nil];

这很好用,但是当我用这种方式在2个VC之间多次切换时,我每次都会创建新的VC并且初始的VC不会被破坏。

例如,我在level1 VC中,决定转到升级VC,因此使用上面的方法。在我的VC层次结构中,当我处于升级场景时,level1仍然存在。当我回到level1场景时,会创建一个新的场景,旧的场景仍然存在!

现在重复这个过程几次,我发现自己有很多关于level1 VC和Upgrades VC的场景,因为最初的VC不会被破坏。

我想到了这个问题的2个修复:要么我以某种方式破坏旧的VC,我不知道如何,或使用导航控制器,我不知道如何。我真的更喜欢第一种方式,因为使用导航控制器,我担心我必须改变很多关于如何浏览控制器的东西。

我尝试了什么:

[self removeFromParentViewController];

没有做任何事情。一旦新视图启​​动,我还尝试将旧视图指向nil(和所有属性),但这也没有做任何事情。我的VC还活着。如果我在呈现新VC之前尝试将视图指向nil,那么我会得到这个和黑屏:

警告:尝试显示其视图不在窗口层次结构中!

编辑:我忘了提及,我正在使用ARC,所以我不能只是解开东西,我的所有观点和VC都是通过编码完成的,除了2件事情之外没有故事板:在故事板中,我放了VC在横向模式下,它继承了什么类及其故事板ID

0 个答案:

没有答案