zoukankan      html  css  js  c++  java
  • 生命周期各方法及对比

    ViewController的生命周期中各方法执行流程如下:

    load—>initialize—>initWithCoder(initWithFrame)—>init(可能没有这步)—>loadView—>viewDidLoad—>viewWillApper—>viewDidApper—>viewWillDisapper—>viewDidDisapper—>viewWillUnload->viewDidUnload—>dealloc

    1、init跟initialize的区别: 

    alloc init每创建一个对象,就会调用一次init方法,但是只会调用一次initialize方法,所以确定只用了initialize一次用来实现某些单独运行的工作,或者希望实现仅仅运行一次的方法, 比如:自定义导航栏中,所有导航栏的字体大小颜色都是一样的,就可以在initialize方法中写,只会调用一遍.

    2、load跟initialize的区别:

    参考:http://www.jianshu.com/p/9368ce9bb8f9

    initialize:这个方法会在 第一次初始化这个类之前 被调用,我们用它来初始化静态变量。load:load 方法会在加载类的时候就被调用,也就是 ios 应用启动的时候,就会加载所有的类,就会调用每个类的 + load 方法。

    3、loadView和viewDidLoad的区别:

    参考:http://blog.csdn.net/q199109106q/article/details/8614044

    loadView时view还没有生成,viewDidLoad时,view已经生成了,loadView只会被调用一次,而viewDidLoad可能会被调用多次(View可能会被多次加载),当view被添加到其他view中之前,会调用viewWillAppear,之后会调用viewDidAppear。当view从其他view中移除之前,调用viewWillDisAppear,移除之后会调用viewDidDisappear。当view不再使用时,受到内存警告时,ViewController会将view释放并将其指向为nil。

    4、awakeFromNib和viewDidLoad的区别: 

    使用nib或storyBoard构建的界面会调用awakeFromNib,而且自定义的任何view都有这个方法,但是viewDidLoad只有UIViewController派生的类对象才可以有吧。比如你自己定义了一个特殊UIView子类,在界面加载的时候要做处理,就得用awakeFromNib;在运行程序的时候,awakeFromNib是在viewDidLoad之前发生的。就是如果想要对view本身进行一些例如背景颜色,透明度之类的设置就只能在awakeFromNib里面进行,因为view被load之后再改就来不及了,所以只能在view被load之前进行设置,就是awakeFromNib。

    5、initWithCoder跟initWithFrame的区别:

    当我们所写的程序里没用用Nib文件(XIB)时,用代码控制视图内容,需要调用initWithFrame去初始化;用于视图加载nib文件,从nib中加载对象实例时,使用 initWithCoder初始化这些实例对象

  • 相关阅读:
    spark视频-Spark Streaming实时计算和流处理
    spark视频-Spark把云计算大数据速度提高100倍以上
    spark视频-Spark on Docker深入揭秘
    spark视频-Spark as a Service
    spark视频-Spark on Yarn
    MyEclipse Web 项目导入 Eclipse 中需要改的文件
    【解决】小米M1刷机教程(卡刷)
    【解决】笔记本发射WiFi
    【解决】U盘装系统(Win7/Win8)& 装双系统
    【解决】Internet访问看似正常(无叹号受限)却打不开网页
  • 原文地址:https://www.cnblogs.com/bigshow1949/p/5465054.html
Copyright © 2011-2022 走看看