iOS基础知识(二)load、initialize的区别
2020-12-11 本文已影响0人
iOS小洁
一个是加载,一个是初始化
Load是在runtime加载类,分类的时候调用的
每个类,分类的load在程序运行中只会调用一次
调用顺序是先调用类的load,按编译顺序,调用子类的load之前会调用父类的load
再调用分类load,也是按照编译先后顺序调用
Load是根据方法地址直接调用的,并不是经过objc_msgSend函数调用
Initalize是在类第一次接收到消息的时候调用的,
调用顺序是先父类再子类
每个类初始化一次,但是父类的initalize会调用多次
Initalize 是通过objc_msgSend调用的
子类没有实现会调用父类的,(父类的initalize会调用多次)
分类如果实现了,会覆盖类本身的