2011-08-11 44 views
2

我有一个正常工作的应用程序。iOS - viewDidLoad在didFinishLaunchingWithOptions委托之前被调用?

但是,我把我的RootViewController的的viewDidLoad方法的第一线,在我委托的didFinishLaunchingWithOptions的第一行另一个断点一个断点,

令人惊讶的对我来说,在viewDidLoad方法进入应用,然后去didFinishLaunchingWithOptions,然后再执行一次viewDidLoad方法。

这是怎么回事?我认为那种行为是完全错误的。

预先感谢您!

# 编辑

这里去我的iPad的委托didFinishLaunchingWithOptions方法:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    [[UIApplication sharedApplication] setStatusBarHidden:NO]; 
    UtilXML *utilXML = [[UtilXML alloc] init]; 
    [utilXML startXMLCommunication]; 
    int quantidadeDeComicsBaixadas = [utilXML quantidadaDeComicsBaixadas]; 

    main_iPad *mainiPad = [[main_iPad alloc] init]; 
    mainiPad.quantidadeDeComicsBaixadas = quantidadeDeComicsBaixadas; 
    mainiPad.navigationItem.title = @"TitleFirstScreen"; 

    UIBarButtonItem *botaoSobre = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:mainiPad action:@selector(goToAboutView)]; 
    mainiPad.navigationItem.rightBarButtonItem = botaoSobre; 

    navController = [[UINavigationController alloc] initWithRootViewController:mainiPad]; 
    navController.navigationBar.tintColor = [UIColor orangeColor]; 
    navController.navigationBar.translucent = YES; 


    [self.window addSubview:navController.view]; 
    [self.window makeKeyAndVisible]; 
    return YES; 
} 

这里是我的iPhone的委托didFinishLaunchingWithOptions方法:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    [[UIApplication sharedApplication] setStatusBarHidden:NO]; 

    UtilXML *utilXML = [[UtilXML alloc] init]; 
    [utilXML startXMLCommunication]; 
    int quantidadeDeComicsBaixadas = [utilXML quantidadaDeComicsBaixadas]; 

    main_iPhone *mainiPhone = [[main_iPhone alloc] init]; 
    mainiPhone.quantidadeDeComicsBaixadas = quantidadeDeComicsBaixadas; 
    mainiPhone.navigationItem.title = @"TitleFirstScreen"; 

    UIBarButtonItem *botaoSobre = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:mainiPhone action:@selector(goToAboutView)]; 
    mainiPhone.navigationItem.rightBarButtonItem = botaoSobre; 

    navController = [[UINavigationController alloc] initWithRootViewController:mainiPhone]; 
    navController.navigationBar.tintColor = [UIColor orangeColor]; 
    navController.navigationBar.translucent = YES; 

    [self.window addSubview:navController.view]; 
    [self.window makeKeyAndVisible]; 
    return YES; 
} 

在两个设备中出现这种奇怪的行为。

+0

你能否介绍一下你的应用程序委托中发生了什么?你有多个应用程序代表文件? (即iPhone/iPad) – Luke

回答

8

application:didFinishLaunchingWithOptions:

的文档,你应该使用这种方法来初始化应用程序并准备 它运行。它在您的应用程序启动后调用 和其主要的笔尖文件已被加载。在调用此方法的时间为 时,您的应用程序处于非活动状态。在此方法返回 后的某个点,将调用后续的委托方法将您的应用程序的 移动到活动(前景)状态或背景 状态。

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

+0

就是这样!我删除了rootViewController中的链接,它的行为如预期(didFinishLaunchWithOptions在viewDidLoad之前调用)。太感谢了!! –

相关问题