initialize方法和init区别详解

initialize运行在init之后.

每个类initialize只会运行一次, init会运行多次.

在程序运行过程中,它会在你程序中每个类调用一次initialize。

runtime 使用了发送消息 objc_msgSend 的方式对 +initialize 方法进行调用

这个调用的时间发生在你的类接收到消息之前,

但是在它的父类接收到initialize之后。

如果子类没有实现 +initialize 方法,那么继承自父类的实现会被调用;

如果一个类的 category 实现了 +initialize 方法,那么就会对这个类中的实现造成覆盖。