- 两者都有
 父类收到这条消息早于子类
- +initialize
 1、一个类只能调用一次(如下代码,类别实现+initialize,本类+initialize方法将不在调用)
@implementation Person (Run)
+(void)load{
    NSLog(@"Person (Run) load");
}
+(void)initialize{
    NSLog(@"Person (Run) initialize");
}
@end
2、不调用类的方法将不会调用
3、+initialize方法可能被调用不止一次
比如:子类未实现initialize方法,父类+initialize方法将调用两次
4、第一次使用类的时候才会调用
5、用线程安全的方式调用
6、父类调用早于子类
- +load 
 1、app启动,类或者类别被加载到运行时的时候调用
 2、尽管你不调用类的任何方法也将调用
 3、如果在类别中实现+load,则为每个类调用一次,类别调用一次
 4、Framework classes 将在这个时候加载
 5、C++ static initializers are not loaded
 6、在main()函数调用之前调用
 7、在这里使用自动释放对象是不安全的
 8、调用顺序 父类>子类>类别
- 使用场景 
- 
+load 
 方法交换
 image.png
- +initialize 
 1、不要在+initialize做繁重的工作
 2、在这个方法里检查是不是本类调用自己
+(void)initialize{
    NSLog(@"Person initialize");
    if(self == [Person self]){
       NSLog(@"Person if initialize");
    }
}
