viewDidLoad()和LoadView()有什么区别?它们在哪些方面彼此不同?
当我们不使用 XIB 开发应用程序时,哪一个更好?
谢谢 。
viewDidLoad()和LoadView()有什么区别?它们在哪些方面彼此不同?
当我们不使用 XIB 开发应用程序时,哪一个更好?
谢谢 。
ViewDidLoad
在视图加载完成loadView
时调用,并在加载开始时调用。
当你创建一个新项目时,你会看到对这些方法的评论,这些评论清楚地给出了你应该使用哪个函数的提示
看到这个
/*
// Implement loadView to create a view hierarchy programmatically, without using a nib.
- (void)loadView {
}
*/
/*
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
[super viewDidLoad];
}
*/
这些评论清晰易懂。
viewDidLoad()
当您从 NIB 加载视图并希望在启动后执行任何自定义时使用。
LoadView()
当您想以编程方式创建视图时使用(不使用界面生成器)。
如果您打算使用 IB 来构建您的 UI,您应该在 viewDidLoad 中完成所有后 IB 初始化。如果您使用 nib 初始化控制器,则该类根本不会调用 loadView。
如果在代码中初始化控制器,viewController会先调用loadView,再调用viewDidLoad。您可以根据自己的喜好在 loadView 或 viewDidLoad 中进行所有初始化。
但是,如果您决定使用 loadView,请务必在尝试读取 self.view 之前设置 view 属性,否则您将进入无限循环并崩溃。
如果您从 stroyboard 或 xib 文件初始化视图,请不要覆盖此方法或在内部调用 [super loadView]。如果您在方法内调用 [super loadView],最好不要覆盖此方法并将以下代码放入您的 viewDidLoad 方法。
如果您以编程方式初始化视图,则永远不要调用 [super loadView]。并且您必须将您的 rootView 分配给 self.view 属性,否则您可能会遇到完美的崩溃。
这不是很明显吗?
viewDidLoad
被称为...当视图完成加载时。
loadView
当视图被告知加载时调用。
两者都不是更好或更坏。这完全取决于您的设计。
祝你好运 :)
如果没有关联的 nib,视图控制器会从与其关联的 nib 加载其视图,然后它会自动调用它的 loadView() 方法来填充它的视图。在这种情况下,您需要实现 loadView() 方法。默认情况下它返回 nil
当您的视图加载到内存中时 viewDidLoad() 方法在这里被调用,您可以根据您的要求进行自定义初始化。
如果您正在开发应用程序而不使用xib
LoadView()
方法,并且如果有 xib,则ViewDidLoad
调用方法
所以最好使用 LoadView 方法。