美文网首页
系统方法调用

系统方法调用

作者: CoderLNHui | 来源:发表于2017-01-12 18:38 被阅读7次

    +(void)load;

    • 当类对象被引入项目时, runtime 会向每一个类对象发送 load 消息
    • load 方法会在每一个类甚至分类被引入时仅调用一次,调用的顺序:父类优先于子类, 子类优先于分类
    • 由于 load 方法会在类被import 时调用一次,而这时往往是改变类的行为的最佳时机,在这里可以使用例如 method swizlling 来修改原有的方法
    • load 方法不会被类自动继承

    +(void)initialize

    • 也是在第一次使用这个类的时候会调用这个方法,也就是说 initialize也是懒加载

    总结:
    在Objective-C中,runtime会自动调用每个类的这两个方法
    +load会在类初始加载时调用
    +initialize会在第一次调用类的类方法或实例方法之前被调用
    这两个方法是可选的,且只有在实现了它们时才会被调用
    两者的共同点:两个方法都只会被调用一次

    loadView

    • 作用:控制器会调用方法去创建控制器的View.

    • 什么时候调用:当第一次使用控制器的View

    • 开发中loadView使用场景:自定义控制器的View.

      • 一旦重写了loadView,表示需要自己创建控制器的View.
      • 如果控制器的View还没有赋值,就不能调用控制器View的get方法.会造成死循环,因为控制器View的get方法底层会调用loadView方法.

    layoutSubviews调用时间:

    • init初始化不会触发layoutSubviews

    addSubview会触发layoutSubviews

    • 设置view的Frame会触发layoutSubviews,当然前提是frame的值设置前后发生了变化

    • 滚动一个UIScrollView会触发layoutSubviews

    • 旋转Screen会触发父UIView上的layoutSubviews事件

    • 改变一个UIView大小的时候也会触发父UIView上的layoutSubviews事件

    相关文章

      网友评论

          本文标题:系统方法调用

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