我一直在浏览一些答案,我得到两个不同的建议:
ViewDidLoad
。 Suggested in this answer 目前最佳做法是哪一个?第二个答案似乎是较旧的(2010年),所以我想知道这是一个旧的,不再建议的做法吗?
答案 0 :(得分:8)
不,永远不要在init中做这些事情。
我viewDidLoad甚至是viewWillAppear,永远不会在init中,因为你的视图当时可能不在那里,当我开始时,我一直在向我发送一些字符串给UILabel而不是那里并且做了应用程序崩溃,但这在模拟器中起作用,因为它比iPhone 3这样的实际设备快得多。
与重置数据和关闭代理相同,不应在dealloc中设置。你认为Dealloc可能不会被调用。您应该在viewWillDissapear或viewWillUnload中设置此类操作。
答案 1 :(得分:7)
对于非基于XIB的视图控制器,正确的位置在-loadView
。 -loadView
负责初始化视图控制器的view
属性,包括任何子视图。系统将在适当的时间调用此方法。您必须在此方法中为视图控制器的view
属性指定一些内容:
- (void)loadView
{
UIView *view = ...;
// create additional views here
self.view = view;
}
如果您有基于XIB的视图控制器,则文档说不要覆盖-loadView
。在这种情况下,您应该在-viewDidLoad
中执行其他视图初始化工作。