当内存不足并且操作系统清理了视图时,我的理解是viewDidUnload是一个清理UIViewController使用的对象和内存的合适位置(否则它将不会被清理干净)视图层次结构)。然后,再次调用loadView以创建视图时,将重新初始化此数据。有人可以举例说明可以清理哪些东西(同样在loadView中初始化)?
我在loadView中初始化了一些数据,它为我的视图控制器设置了运行包含字幕,图像等的复杂动画脚本的阶段。我认为如果我的视图是这样的话,发布和清理这些数据是有意义的被操作系统删除(并且调用了viewDidUnload),但后来我想,为什么我不能在init中初始化那些数据并在dealloc中清理它而不是反复初始化和清理相同的数据(它没有' t根据加载或显示视图的时间而变化。这会是一个更好的地方吗?
基本上,我的想法是:
任何人都可以对我的问题和/或我的思路给出一些澄清吗?
答案 0 :(得分:0)
如果您要在该视图与另一个视图之间往返,并且视图控制器将被保留,您可以将初始化移至init
,并在dealloc
中清除它。但你想要做的还是在- (void)didReceiveMemoryWarning
中清理它(注意不要在self.view
中使用didReceiveMemoryWarning
,否则会重新加载视图:))。然后你可以使用延迟加载在viewDidLoad
中重新加载它(即如果它尚不存在则初始化数据,否则不要)。
当然,你不能在init
中进行任何初始化,这取决于存在的视图。viewDidLoad
就是这个地方。