在哪里初始化数据结构:在init还是viewDidLoad中?

5
哪种方法是在我的视图控制器中用于显示内容的数据结构初始化的最佳位置: init还是viewDidLoad
此外,对于任一情况,我应该在哪里释放它们:deallocviewDidUnload还是didReceiveMemoryWarning

2
就记录而言,涉及UIViewController子类的选择是在initWithNibName:bundle:和viewDidLoad之间进行的。对于这些类,普通的init不是指定的初始化程序。 - NJones
1个回答

4
全面的答案是,“它取决于你的视图生命周期。”每种方法都有其相对于视图加载和显示的位置。
作为一个经验法则,viewDidLoad是一个很好的默认位置——你的XIB视图已经被实例化,所以你可以设置它们的属性。如果你需要大量加载和卸载视图,你可能想把纯数据推回到你的init调用中。 viewWillAppear是另一个选择,再次取决于你的视图生命周期以及在视图隐藏时你的数据有多少可能会发生变化。
预计时间:在分配内存的补充调用中释放内存。在deallocviewDidUnloadviewDidDisappear中。didReceiveMemoryWarning应该始终卸载任何你可以卸载的东西,无论你在哪里初始化它,你的代码应该足够聪明,在它重新激活后重新加载数据。

正如NJones在上面的评论中提到的那样,通过“init”调用,我指的是指定的初始化程序,无论它是什么 - 默认情况下是您的initWithNibName:bundle:。 我倾向于稍微重新排列一下我的代码,但这是个人风格的问题 - 关键是要清楚指定的初始化程序是什么(所有其他初始化程序调用始终调用的一个方法,因此是您在init周期中进行重要工作的地方)。 - Todd Masco

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接