didFinishLaunchingwithOptions在awakeFromNib之后调用

时间:2014-06-05 12:39:32

标签: ios objective-c uistoryboard appdelegate

Apple doc说:

  

在显示初始视图控制器之前,您的应用代表是   调用,让您有机会配置视图控制器。

但实际上并没有发生这种情况。

  1. 我使用single view template在Xcode中创建了项目。
  2. ViewController.m我添加了awakeFromNib方法,而我只是NSLog(@"VC")
  3. 然后在AppDelegatedidFinishLaunchingwithOptionsNSLog(@"AD")
  4. 当我运行项目ViewController时先执行AppDelegate
  5. 使用storyboard didFinishLaunchingwithOptions方法总是首先执行,我能够配置所有ViewControllers可以使用的数据库和其他初始内容,但现在我无法做到。
  6. ViewController.m正在执行,我的数据库设置在didFinishLaunchingWithOptions
  7. 出了什么问题?

1 个答案:

答案 0 :(得分:4)

没有什么是错的。当故事板加载时,将调用awakeFromNib。文档说明"在初始视图控制器显示"之前。

你可能在awakeFromNib中做了一些不合适的事情,但是没有人知道没有更多的信息

故事板的应用程序生命周期与使用nib略有不同。使用nib,您可以在didFinishLaunching中创建并填充初始视图控制器。在调用didFinishLaunching之前,已经为您完成了故事板。然后,您可以使用该方法访问self.window.rootViewController以获取初始视图控制器。

关键是awakeFromNib 不是做一些好事,比如回应正在设置的数据库或查询值。您的视图尚未加载。你应该在生命周期的后期做这些事情。