initialize方法和init区别详解
initialize运行在init之后.
每个类initialize只会运行一次, init会运行多次.
在程序运行过程中,它会在你程序中每个类调用一次initialize。
runtime 使用了发送消息 objc_msgSend 的方式对 +initialize 方法进行调用
这个调用的时间发生在你的类接收到消息之前,
但是在它的父类接收到initialize之后。
如果子类没有实现 +initialize 方法,那么继承自父类的实现会被调用;
如果一个类的 category 实现了 +initialize 方法,那么就会对这个类中的实现造成覆盖。