rootViewController是否随时准备在应用程序时显示segue:didBecomeActive被调用(iOS)?

我的应用程序在故事板中设置了rootViewController。 我最初问过这个问题,但我现在可以看到这是一个错误的问题:

是否始终在application:didBecomeActive程序委托之前调用rootViewController的viewDidLoad方法application:didBecomeActive在app委托中? 这个viewDidLoad方法总是在application:didBecomeActive之前完成application:didBecomeActive被调用,或者两者可以同时运行吗?

我可以运行测试,但我知道这些测试没有考虑到每种情况。 我想了解这里是否有适用的强硬规则,或者我是否可能在某些时候处理竞争条件。 从我所知道的,rootViewController的viewDidLoad似乎在application:didbecomeActive之前被调用并完成application:didbecomeActive被调用,但我无法弄清楚这是否是我可以依赖的东西。

我使用的是iOS 11和Xcode 9。

我的rootViewController用于显示我的appUpdating视图,密码视图,我的法律术语视图,我的handleImportedFile视图和我的tabbarcontroller。 它就像各种各样的启动协调员,因为我的加载过程非常复杂。 现在我正在移动用户的sqlite数据库的位置,我的一些用户的数据库是巨大的。 它必须在后台完成,但是当主队列上运行hud时,因为应用程序在完成之前无法显示数据。 如果我在application:didFinishLaunchingWithOptions执行此操作application:didFinishLaunchingWithOptions ,则某些用户将获得监视程序计时器。 所以我想将加载过程移动到application:didBecomeActive (我有一个标志告诉我应用程序是否从终止启动)。 当它完成运行时,rootViewController会对相关视图执行segue。 但我认为rootViewController需要在那个时候加载,我不确定总是如此。

基本上,在下面的代码中,我试图找出[self.masterController showApplicableView] ,它导致rootViewController(我称之为masterController)执行segue,在“安全的地方”调用,或者,如果,在任何在这种情况下,让rootViewController执行segue可能为时尚早。

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.masterController = (MasterViewController*)self.window.rootViewController; self.activatingFromTerminated = YES; return YES; } - (void)applicationWillEnterForeground:(UIApplication *)application { self.activatingFromTerminated = NO; } - (void)applicationDidBecomeActive:(UIApplication *)application { if (_activatingFromTerminated) { self.activatingFromTerminated = NO; [[CoreDataController sharedManager] loadStoreWithCompletionHandler:^(NSError * _Nullable error) { if ([CoreDataController sharedManager].storeLoaded) { [self.masterController showApplicableView];//performs applicable segue } }]; } } 

从我所知道的,rootViewController的viewDidLoad似乎在应用程序之前被调用并完成:didbecomeActive被调用,但我无法弄清楚这是否是我可以依赖的东西。

它不是,你不应该。 你根本不应该担心这一点。 你认为你需要知道这一点的事实是你的代码中的恶臭。 这些是来自两个完全不同的区域(应用程序和视图控制器)的生命事件,它们的相对时间应该不关心你的。 在每一个适合该事件的意义。