iOS – viewDidLoad在didFinishLaunchingWithOptions委托之前被调用?

我有一个应用程序正在工作,因为它应该。

但是,我在我的rootViewController的viewDidLoad方法的第一行放置了一个断点,在我的委托的didFinishLaunchingWithOptions的第一行放了另一个断点,

令我惊讶的是,应用程序在viewDidLoad方法中input,然后去了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; } 

这种奇怪的行为发生在两个设备。

application:didFinishLaunchingWithOptions:的文档application:didFinishLaunchingWithOptions:

您应该使用此方法来初始化您的应用程序并为运行做好准备。 它是在您的应用程序启动并且其主要的nib文件已被加载后调用的。 在调用此方法时,您的应用程序处于非活动状态。 在此方法返回后的某个时刻,将调用后续的委托方法将应用程序移至活动(前景)状态或后台状态。

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