iOS: ViewController的-init和-viewLoad有什么区别?



我不知道什么是正确的地方设置像导航栏的tintColor或我的ViewController的标题。它也适用于-init方法和-viewLoad方法。做这件事的"最佳实践"或"正确方法"是什么?这其中有什么优点吗?

init方法(是的,有不止一个)是UIViewController初始化的地方。因此,这是您为UIViewController做事情的地方,而不是它的视图。

如果您使用nib来加载视图,那么设置任何属性的最佳位置是viewDidLoad方法。这个方法在nib被加载后被调用。如果您使用loadView方法以编程方式设置视图,那么这里就是设置UIControl属性的地方。

由于系统可以卸载视图以节省内存,因此它将单独留下UIViewController。在init方法中设置的任何属性都不会再次应用,因为UIViewController已经初始化了。

init方法是用来初始化viewController的,而viewDidLoad方法是用来加载你的nib的。你的视图)。所以当你想对你的viewController做一些事情时使用init方法当你想对你的视图做一些事情时使用viewDidLoad。

正确的位置是设置在viewDidLoad中。要了解这些方法的更多信息,apple提供了

文档

简单来说,init用于准备数据。viewDidLoad用于向视图中填充数据。

根据Apple's Documents

初始化方法

Task:分配视图控制器所需的关键数据结构

讨论:您的自定义初始化方法(无论是命名为init还是其他东西)始终负责将视图控制器对象置于已知的良好状态。使用这些方法分配任何数据结构,以确保正确的操作。

viewDidLoad

Task:分配或加载要显示在视图中的数据。

讨论:使用viewDidLoad方法来加载任何你想要显示的数据对象。当这个方法被调用时,你的视图对象被保证存在并且处于已知的良好状态。

最新更新