我一直在这里浏览一些答案,我得到了两个不同的建议:
哪一个是当前的最佳实践?第二个答案似乎更老(2010),所以我想知道它是否是一个旧的,不再建议的做法?
我一直在这里浏览一些答案,我得到了两个不同的建议:
哪一个是当前的最佳实践?第二个答案似乎更老(2010),所以我想知道它是否是一个旧的,不再建议的做法?
不,永远不要在 init 中做这样的事情。
我 viewDidLoad 甚至 viewWillAppear,从来没有在 init 中,因为你的视图当时可能不存在,当我开始时,它一直发生在我身上,我正在为一个不存在的 UILabel 设置一些字符串并导致应用程序崩溃,但这在模拟器中有效,因为它比 iPhone 3 等实际设备快得多。
与重置数据和关闭委托相同,不应在 dealloc 中设置。当您认为会调用时,可能不会调用 Dealloc。您应该在 viewWillDissapear 或 viewWillUnload 中设置此类操作。
对于非基于 XIB 的视图控制器,正确的位置是在-loadView
. -loadView
负责初始化视图控制器的view
属性,包括任何子视图。系统会在适当的时候调用这个方法。view
您必须在此方法中为视图控制器的属性分配一些东西:
- (void)loadView
{
UIView *view = ...;
// create additional views here
self.view = view;
}
如果你有一个基于 XIB 的视图控制器,文档说不要覆盖-loadView
. 在这种情况下,您应该在-viewDidLoad
.