如果UIViewController有UINavigationController和UITabBarController
-[AppDelegate application:didFinishLaunchingWithOptions:]
2019-12-11 12:00:59.940802+0800 Calayer[66251:6585030] -[CustomTabBarController viewDidLoad]
2019-12-11 12:00:59.943844+0800 Calayer[66251:6585030] -[CustomNavigationController viewDidLoad]
topViewController:(null)
2019-12-11 12:00:59.950697+0800 Calayer[66251:6585030] -[CustomNavigationController viewDidLoad]
topViewController:(null)
2019-12-11 12:00:59.952390+0800 Calayer[66251:6585030] -[CustomNavigationController viewDidLoad]
topViewController:(null)
2019-12-11 12:00:59.962496+0800 Calayer[66251:6585030] -[CustomNavigationController viewWillAppear:]
topViewController:ViewController
2019-12-11 12:00:59.975597+0800 Calayer[66251:6585030] -[CustomNavigationController viewWillLayoutSubviews]
topViewController:ViewController
2019-12-11 12:00:59.976298+0800 Calayer[66251:6585030] -[ViewController viewDidLoad]
2019-12-11 12:00:59.976730+0800 Calayer[66251:6585030] -[ViewController viewWillAppear:]
2019-12-11 12:00:59.978331+0800 Calayer[66251:6585030] -[CustomNavigationController viewDidLayoutSubviews]
topViewController:ViewController
2019-12-11 12:00:59.978491+0800 Calayer[66251:6585030] -[CustomNavigationController viewWillLayoutSubviews]
topViewController:ViewController
2019-12-11 12:00:59.992946+0800 Calayer[66251:6585030] -[CustomNavigationController viewDidLayoutSubviews]
topViewController:ViewController
2019-12-11 12:00:59.993341+0800 Calayer[66251:6585030] -[ViewController viewWillLayoutSubviews]
2019-12-11 12:00:59.993485+0800 Calayer[66251:6585030] -[ViewController viewDidLayoutSubviews]
2019-12-11 12:01:00.025355+0800 Calayer[66251:6585030] -[ViewController viewDidAppear:]
2019-12-11 12:01:00.025772+0800 Calayer[66251:6585030] -[CustomNavigationController viewDidAppear:]
topViewController:ViewController
加入子控制器跳转ViewController3
-[CustomNavigationController viewWillLayoutSubviews]
topViewController:ViewController3
2019-12-11 12:02:27.116574+0800 Calayer[66251:6585030] -[ViewController3 viewDidLoad]
2019-12-11 12:02:27.116688+0800 Calayer[66251:6585030] -[ViewController viewWillDisappear:]
2019-12-11 12:02:27.116805+0800 Calayer[66251:6585030] -[ViewController3 viewWillAppear:]
2019-12-11 12:02:27.135291+0800 Calayer[66251:6585030] -[CustomNavigationController viewDidLayoutSubviews]
topViewController:ViewController3
2019-12-11 12:02:27.135523+0800 Calayer[66251:6585030] -[ViewController3 viewWillLayoutSubviews]
2019-12-11 12:02:27.135612+0800 Calayer[66251:6585030] -[ViewController3 viewDidLayoutSubviews]
2019-12-11 12:02:27.649734+0800 Calayer[66251:6585030] -[ViewController viewDidDisappear:]
2019-12-11 12:02:27.650085+0800 Calayer[66251:6585030] -[ViewController3 viewDidAppear:]
结论:
1、一定是先走[AppDelegate application:didFinishLaunchingWithOptions:],但不一定走完了在去viewController,意思是如果在[AppDelegate application:didFinishLaunchingWithOptions:]这个函数初始化了其他配置,如果放在了控制器初始化之后,那这些配置在rootViewController不会生效,因为rootViewController 已经初始化完毕;
2、TabBarController只会走一个viewdidload,至于为啥俺也不晓得,至于导航控制器和其栈顶控制器之间生命周期函数的调用顺序如最上面代码所示;
3、导航控制器执行push操作栈顶控制器切换时候生命周期函数调用顺序如第二份代码示例中所打印的结果
网友评论