1.+load方法
- 在程序启动的时候会加载所有的类和分类,并调用所有类和分类的+load方法(只会调用一次)
- 先加载父类,再加载子类;也就是先调用父类的+load,再调用子类的+load
- 先加载元原始类,再加载分类
- 不管程序运行过程有没有用到这个类,都会调用+load加载
@implementation Person
+ (void)load
{
NSLog(@"%s", __func__);
}
@end
@implementation Student : Person
+ (void)load
{
NSLog(@"%s", __func__);
}
@end
输出结果:
+[Person load]
+[Student load]
2.+initialize
- 在第一次使用某个类时(比如创建对象等),只会调用一次+initialize方法
- 一个类只会调用一次+initialize方法,先调用父类的,再调用子类的
@implementation Person
+ (void)initialize
{
NSLog(@"%s", __func__);
}
@end
@implementation Student : Person
+ (void)initialize
{
NSLog(@"%s", __func__);
}
@end
int main(int argc, const char * argv[]) {
Student *stu = [Student new];
return 0;
}
输出结果:
+[Person initialize]
+[Student initialize]