2011-08-11 42 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之前調用)。太感謝了!! –

相關問題