• 13、UIViewController生命周期


    UIViewController中loadView, viewDidLoad, viewWillUnload, viewDidUnload, viewWillAppear, viewDidAppear, viewWillLayoutSubviews,viewDidLayoutSubviews,viewWillDisappear, viewDidDisappear方法,按照调用顺序说明如下:

    1. initWithNibName:bundle:

    如果是通过调用initWithNibName:bundle指定nib文件名初始化的话,ViewController会根据此nib来创建View。如果name参数为nil,则ViewController会通过以下两个步骤找到与其关联的nib:
    1)如果ViewController的类名以“Controller”结尾,例如ViewController的类名是MyViewController,则查找是否存在MyView.nib;
    2)找跟ViewController类名一样的文件,例如MyViewController,则查找是否存在MyViewController.nib

    2. loadView

    在view初始化之前,不能先调用view的getter方法, 应先调用[supper loadView] 否则将导致死循环

    3. viewDidLoad

    当VC的view对象载入内存后调用,用于对view进行额外的初始化操作

    4. viewWillAppear

    在view即将添加到视图层级中(显示给用户)且任意显示动画切换之前调用(这个时候supperView还是nil)。这个方法中完成任何与视图显示相关的任务,例如改变视图方向、状态栏方向、视图显示样式等

    5. viewDidAppear

    在view被添加到视图层级中,显示动画切换之后调用(这时view已经添加到supperView中)。在这个方法中执行视图显示相关附件任务,如果重载了这个方法,必须在方法中调用[supper viewDidAppear]; 

    6. viewWillLayoutSubviews

    view即将布局其Subviews。比如view的bounds改变了(例如状态栏从不显示到显示,视图方向变化),要调整Subviews的位置,在调整之前要做的一些工作就可以在该方法中实现。

    7. viewDidLayoutSubviews

    view已经布局其Subviews。比如view的bounds改变了(例如状态栏从不显示到显示,视图方向变化),已经调整Subviews的位置,在调整完成之后要做的一些工作就可以在该方法中实现。

    8. viewWillDisappear

    view即将从superView中移除且移除动画切换之前,此时还没有调用removeFromSuperview。

    9. viewDidDisappear

    view从superView中移除,移除动画切换之后调用,此时已调用removeFromSuperview。

    10. viewWillUnload

    在VC的view对象从内存中释放之前调用,可以在view被释放前做一些资源清理操作。在iOS6.0开始就废弃了,该方法不再会调用

    11. viewDidUnload

    在VC的view对象从内存中释放之后调用,可以在view被释放后做一些view相关的引用清理操作,此时view为nil。在iOS6.0开始就废弃了,该方法不再会调用

    当一个视图被移除屏幕并且销毁的时候的执行顺序,这个顺序差不多和上面的相反 
    1、viewWillDisappear            视图将被从屏幕上移除之前执行 
    2、viewDidDisappear            视图已经被从屏幕上移除,用户看不到这个视图了 
    3、dealloc                            视图被销毁,此处需要对你在init和viewDidLoad中创建的对象进行释放 

     

  • 相关阅读:
    arcgis10.2转shp文件中文乱码问题解决方案
    Android Context作为参数传递this
    andriod inputbox
    andriod inputType
    《ArcGIS Runtime SDK for Android开发笔记》——(5)、基于Android Studio构建ArcGIS Android开发环境(离线部署)(转)
    终于理解了什么是LGPL
    产品经理如何与强势的技术沟通? 技术比较有资历,会以技术无法实现等方面的原因拒绝处理产品提出的需求。 你们是否遇到这样的技术? 产品懂技术的话,是不是会好一些,因为可以和技术说“行话”了,并且产品懂技术就不会被忽悠了。
    Core Dump总结
    LIBRARY_PATH是编译时候用的,LD_LIBRARY_PATH是程序运行是使用的
    如何禁止C++默认成员函数
  • 原文地址:https://www.cnblogs.com/wn-blog/p/6677636.html
Copyright © 2020-2023  润新知