+load 、+ initialize 方法的区别?调用、顺序?

143 阅读1分钟

区别

load:函数调用 在main函数执行前调用+ initialize:objc_msg_send()在main函数执行后调用

新建4个类Person(父类)、Student(子类)、student+loadTest(分类)、student+loadTest2(分类)

load

1.load方法执行顺序:Person ->Student->student+loadTest = student+loadTest2,分类的执行顺序 按照编译时序决定 后编译的先执行

load方法不会被覆盖

initialize

谁的分类的initialize方法就会覆盖谁的initialize方法。可以理解为关系就是父->->分类。当分类没有实现initialize方法时,父->子。当分类实现initialize方法时,分类->子。当子类没有实现initialize时,父类会多次调用。