• 生命周期各方法及对比


    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初始化这些实例对象

  • 相关阅读:
    WebView
    dpdpipxptem单位长度理解
    js跨域访问
    JS&CSS压缩工具YUICompressor
    IIS7.5站点配置
    Jscript运行时错误:没有权限
    控制HttpContext为null
    JSON数组成员反序列化
    Linux 系统默认运行级别设定
    环境搭建常用工具
  • 原文地址:https://www.cnblogs.com/bigshow1949/p/5465054.html
Copyright © 2020-2023  润新知