- 首页 > it技术 > >
load和initialize
+ (void)load{
NSLog(@"load Animal");
}
+ (void)initialize
{
//如果子类不实现initialize() - 运行时将调用继承的实现 - 或者如果子类显式调用[super initialize],
//则父类initialize实现可能会被多次调用。
//为使父类只调用一次,应加以判断if (self == [Animal class]) { }
if (self == [Animal class]) {
NSLog(@"initialize animal");
}
}
+load+initialize
调用时机被添加到runtime时(app启动过程中,main函数调用前)收到第一条消息前,如果该类未用到,则永远不调用调用顺序父类->子类->分类父类->子类调用次数1次多次是否需要显式否否
调用父类实现是否沿用否是(如果子类未实现,调用父类实现,而父类也会调用一遍,就会导致父类实现调用多次,因此加以判断限制)
父类的实现分类中的实现类和分类都执行覆盖类中的方法,只执行分类的实现
推荐阅读