• iOS ViewController生命周期


    ViewController是view的controller,viewController的职责主要包括管理内部各个view的加载显示与卸载,同时负责与其他ViewController的通信和协调。

    在IOS中 有两类ViewController:

    1. 显示内容,比如UIViewController,UITableViewController等,同时还可以自定义继承自UIViewController得ViewController。

    2. 用于控制和显示其他ViewController的ViewController。这种ViewController一般都是一个ViewController容器:如UINavigationViewController和UITabBarController等,

    它们都有一个属性:viewControllers。UINavigationController是以Stack的形式来存储和管理ViewController,UITabBarController是以Array的形式来管理ViewController。

    ViewController生命周期

    alloc -> initWithNibName ->loadView ->viewDidLoad -> 

    viewWillAppear ->viewDidAppear -> viewWillDisappear ->

    viewDidDisappear ->dealloc。

    启动程序:  ViewDidLoad    [view即将显示,此时superview一般为nil,即view还没有加到任何一个view之中]

           ViewWillAppear    [view已经显示,被加到另一个view中]

           View Did Appear  [view即将消失,此时一半还没有调用removeFromSuperView]

    按下Home键,并没有任何纪录(此时程序被挂起)

    双击Home键,删除该程序:  ViewWillDisappear  [view从superview中移除了]

                   View Did Disappear

    当view被添加到其他view中之前时,会调用viewWillAppear,而之后会调用viewDidAppear

    当view从其他view中移除之前时,会调用viewWillDisAppear,而之后会调用viewDidDisappear

    所以只有内存不够的时候或是程序被终止的时候,才会调用viewWillDisappear和viewDidDisappear

    loadView和viewDidLoad的区别就是,loadView时view还没有生成,viewDidLoad时,view已经生成了,loadView只会被调用一次,而viewDidLoad可能会被调用多次(view可能会被多次加载)。

    代码组织 -- 》如何设计良好的viewcontroller

    1. init里不要出现创建view的代码。在init里应该只有相关数据的初始化(非常重要),init里不要掉self.view,否则会导致viewcontroller创建view。(因为view是lazyinit的)。

    2. loadView中只初始化view,一般用于创建比较关键的view如tableViewController的tabView,UINavigationController的navigationBar。

    3. viewDidLoad这时候view已经有了,最适合创建一些附加的view和控件了。有一点需要注意的是,viewDidLoad会调用多次。

    4. viewWillAppear这个一般在view被添加到superview之前,切换动画之前调用。在这里可以进行一些显示器前的处理。比如键盘弹出,一些特殊的过程动画。

    5. viewDidAppear一般用于显示后。

  • 相关阅读:
    Elasticsearch集成IKAnalyzer分析器
    Elasticsearch操作Document文档
    ElasticSearch简介
    Lucene查询索引
    Lucene索引维护(添加、修改、删除)
    Lucene使用IKAnalyzer分词
    Lucene搜索引擎入门
    MySQL优化(四)——读写分离
    MySQL优化(三)——主从复制
    Java 身份证验证工具类代码模板
  • 原文地址:https://www.cnblogs.com/wmx-rj/p/4858871.html
Copyright © 2020-2023  润新知