zoukankan      html  css  js  c++  java
  • iOS开发-类的加载load函数和initialize函数

    简要概括

    load是类加载方法,initialize是类初始化方法。

    要点

    不需要调用super的方法。

    initialize和load方法系统只调用一次,开发者可以多次调用(可以,但是不建议)。

    类加载到系统调用load方法,类首次使用调用initialize方法。

    initialize和load的方法不要添加太多逻辑,类比不要在初始化方法做太多操作。

    initialize中可以实现无法在编译期初始化的全局变量,load的方法中可以实现swizzling的逻辑。

    load的调用并不视为类的第一个方法完成,因为load中调用了当前类中的方法,就先去执行initialize方法。

    load方法调用的顺序:父类(Superclass)的方法优先于子类(Subclass)的方法,类中的方法优先于类别(Category)中的方法。

    所有类别(Category)中的load方法都会执行,和普通函数的替换效果不同。

    最后一个类别(Category)中的initialize方法会覆盖之前类别和类中的initialize方法。

    思考题

    1,有类A继承类P,类B承类P,那么三个类的load方法、initialize方法的调用先后顺序是如何决定?

    2,有类A,有类A的类别C1,有类A的类别C2,如果A、C1、C2都实现了load,调用的先后顺序是如何决定?

    参考

    iOSmain函数之前的调用

    load和initialize函数

  • 相关阅读:
    <JZOJ5912>VanUSee
    <JZOJ5910>duliu
    <JZOJ5913>林下风气
    pytest学习笔记(二)
    试用saucelabs进行浏览器兼容性测试
    pytest学习笔记(一)
    SSM框架搭建,以及mybatis学习
    游戏2048的python实现
    使用svn在github上下载文件夹
    jenkins集成python的单元测试
  • 原文地址:https://www.cnblogs.com/loying/p/5226555.html
Copyright © 2011-2022 走看看