# 第一次加载这个类的时候调用,当程序一启动就把类加载进内存 main函数之前就执行
+ (void)load
{
NSLog(@"");
}
# 当前类或者它的子类第一次使用的时候调用(但并不是只会调用一次,当有多个子类的时候,每次使用一个新的子类都会调用)
+ (void)initialize
{
NSLog(@"");
}
initialize方法分析
@interface A : NSObject
@interface B : A
类A第一次初始化会调用(再创建A对象就不会调用)
类A的子类B第一次创建也会调用B的initialize方法,若是B类没有实现此方法,依然会调用A的initialize方法
总结:类第一次初始化会调用initialize方法,自己实现调用自己,自己没实现,调用父类实现的,以此类推
如果只想在A类初始化一些操作,可以参考下面代码
+ (void)initialize {
// 只在此类第一次使用时调用,子类第一次初始化不调用
if (self == [Animal class])
{
NSLog(@"%s", __func__);
}
}