+load 和 initialize

1、+load是根据函数地址直接调用,initialize是通过objc_msgSend调用
2、+load是runtime加载类、分类时候调用(只会调用一次)
3、initialize是第一次接受消息的时候调用,每个类只会调用一次(子类没实现,父类可能被调用多次)
4、+load调用优先于initialize,子类调用+load之前会调用父类的+load,再调用分类的+load,分类之间先编译,先调用。
5、initialize先初始化父类,再初始化子类(可能最终调用父类的initialize

你可能感兴趣的:(+load 和 initialize)