viewController的viewdidload在appDelegate的方法之前调用

时间:2015-09-28 16:24:44

标签: ios macos

我想在viewDidLoad调用之前初始化一些代码,但它总是首先转到viewDidLoad然后转到方法applicationDidFinishLaunching。 我无法理解发生了什么?

2 个答案:

答案 0 :(得分:4)

这是因为AppDelegate在applicationDidFinishLaunching之前自动实例化其窗口和主视图控制器。你应该取消选中"是初始视图控制器"在您的故事板中,在applicationDidFinishLaunching中手动创建窗口及其根视图控制器。

答案 1 :(得分:4)

application:didFinishLaunchingWithOptions的文档:

  

您应该使用此方法初始化您的应用程序并做好准备   它运行。在您的应用程序启动后调用它   并且已加载其主nib文件。当时这个方法是   调用后,您的应用程序处于非活动状态。在某些时候之后   此方法返回,调用后续委托方法移动   您的应用程序到活动(前景)状态或背景   状态。

因此,一旦调用了view属性或方法,就会为视图控制器延迟加载视图。当发生这种情况时,会调用viewDidLoad,因此如果您的窗口rootViewController属性设置为nib中的根ViewController,那么这是预期的行为。