我有一个应有的应用程序。

但是,我在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;
}

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

最佳答案

application:didFinishLaunchingWithOptions: 的文档

您应该使用此方法初始化您的应用程序并准备
运行。在您的应用程序启动后被调用
并且其主要笔尖文件已被加载。当时这种方法是
调用,您的应用程序处于非 Activity 状态。之后的某个时候
此方法返回后,将调用后续的委托方法来移动
您的应用程序处于 Activity (前景)状态或后台
州。

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

关于ios - iOS-在didFinishLaunchingWithOptions委托(delegate)之前调用viewDidLoad吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7030635/

10-13 07:46
查看更多