[英]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.