viewDidUnload弃用,但是对辅助视图的强引用呢?

时间:2012-10-23 08:02:48

标签: ios5 view ios6 didreceivememorywarning viewdidunload

在iOS6中,方法viewDidUnload已被弃用,内存管理对UIViewController进行了大量更改。这里有一些关于新模式的简要介绍 在视图控制器中占用更多内存的部分是视图(当然还有最终会创建的大量数据)。视图本身并没有消耗如此多的内存,是后备存储,绘制的部分(最令人好奇的是CABackingStore)。这个新模式似乎检查视图控制器视图所拥有的所有后备存储所占用的内存是否是不稳定的,这些内存未显示在窗口中。当出现内存警告时,将从内存中清除此后备存储。使用此方法,您可以保存重新创建非常昂贵的视图的过程。
Apple表示从iOS5项目中删除viewDidUnload / viewWillUnload是安全的,即使您将部署目标设置为iOS5,模板也不会显示这些方法。据我所知,如果视图拥有的出口很弱,当你在超类实现中释放视图控制器的视图时,由于ARC,所有内容都将被正确释放,而不会出现泄漏或僵尸。
由于我真的很欣赏这种新方法,我对这种情况并不自信:让我们假设我们有一个视图控制器及其视图,这个视图只是一个内容视图,它将托管在视图控制器的xib中创建的不同视图,它们在运行时动态。当您为这些视图创建出口时,它们会自动创建为强大且有意义,因为“主视图”并不拥有它们。
对于新规则,此视图的后备存储将不会被签名因为它们不属于iOS6和iOS5中的主视图(如果我删除了viewDidUnLoad),因此它们不会因为同样的原因而被释放。
如何管理这种情况?在didReceiveMemoryWarning中释放它们是正确的吗?但如果视图只加载一次,我可以在iOS6中重新创建它们吗?

0 个答案:

没有答案