ViewDidLoad在AppDelegate didFinishLaunchingWithOptions执行之前运行!

时间:2011-05-26 13:54:06

标签: iphone objective-c xcode ios delegates

我遇到一个奇怪的问题,方法“ViewDidLoad”在AppDelegate的didFinishLaunchingWithOptions执行之前运行! 因为我只检查“didFinishLaunchingWithOptions”中是否存在数据库,如果数据库不存在,我的应用程序崩溃。经过几个小时的闲逛后,我厌倦了这样做,并呼吁HEEEEELP! 如果你愿意,可以如此友善,并指出我正确的方向,我的项目可能会出错。我无法弄明白(aaarggh!)

谢谢!

祝你好运 汤姆

4 个答案:

答案 0 :(得分:3)

viewDidLoad可以在从NIB加载的ViewControllers上运行,因为这些是在调用didFinishLaunchingWithOptions之前加载的:

答案 1 :(得分:0)

我遇到了同样的问题,在详细查看代码之后,我发现在xViewController的awakeFromNib内,我正在启动另一个yViewController。所以yViewController的viewDidLoaddidFinishLaunchingWithOptions:之前运行。

基本上,在awakeFromNib之前调用初始VC didFinishLaunchingWithOptions:。您可能有类似的设置。看看那个。

答案 2 :(得分:0)

如果您的数据库文件加载速度不够快;覆盖你的AppDelegate的init():

override init() {
    if filesExistBool == false {
        addDBFiles()
    }
}

答案 3 :(得分:-1)

我不相信你。

application:didFinishLaunchingWithOptions:中,您决定加载哪些视图。该应用程序不会随意加载视图而不会告诉它这样做。您是否先在viewDidLoad中放置一个断点,在application:didFinishLaunchingWithOptions:中放置一个断点,或者您只是假设application:didFinishLaunchingWithOptions:没有执行,因为它无效。