美文网首页
控制器生命周期函数

控制器生命周期函数

作者: 不辣先生 | 来源:发表于2019-12-11 12:15 被阅读0次

    如果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操作栈顶控制器切换时候生命周期函数调用顺序如第二份代码示例中所打印的结果

    相关文章

      网友评论

          本文标题:控制器生命周期函数

          本文链接:https://www.haomeiwen.com/subject/ohjogctx.html