簡體   English   中英

iOS - 在 didFinishLaunchingWithOptions 委托之前調用 viewDidLoad?

[英]iOS - viewDidLoad is being called BEFORE the didFinishLaunchingWithOptions delegate?

我有一個按預期工作的應用程序。

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

這是我 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:

您應該使用此方法來初始化您的應用程序並為運行做好准備。 它在您的應用程序啟動並且其主 nib 文件已加載后調用。 在調用此方法時,您的應用程序處於非活動狀態 state。 在此方法返回后的某個時間點,調用后續委托方法將您的應用程序移動到活動(前台)state 或后台 state。

因此,一旦調用view屬性或方法,視圖就會為視圖控制器延遲加載。 發生這種情況時會調用viewDidLoad ,因此如果您的 window rootViewController屬性設置為 nib 中的根 ViewController,那么這是預期的行為。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM