+ (void)load方法
类的+load方法在main函数之前加载
然后是加载分类的+load方法
最后才加载main函数
原因:因为ObjC 对于加载的管理主要使用了两个列表,分别是
loadable_classes 和
loadable_categories
其中的add_class_to_loadable_list就是将未加载的类添加到 loadable_classes 数组中,add_category_to_loadable_list就是将未加载的分类添加到 loadable_classes 数组中
加载顺序是loadable_classes 然后 add_category_to_loadable_list
+load方法和+initialize方法的区别
load方法是在程序运行后立即执行,而init方法是在类的方法第一次被调用时执行;
load方法自身未定义不会沿用父类方法,而init会
分类中会执行所有的load方法(在类的load方法完后),但分类的init方法会只执行一个并覆盖类的init方法